AWS SSL security error : [curl] 60: SSL certificate prob...: unable to get local issuer certificate
As mentioned by Jeremy Lindblom in the comments, the solution for AWS SDK v2 is to set the ssl.certificate_authority
option when instantiating the SDK:
$aws = Aws\Common\Aws::factory(array( 'region' => 'us-west-2', 'ssl.certificate_authority' => '/path/to/updated/cacert.pem'));
I'll add that this was changed in the AWS SDK v3, here is the new method:
$client = new DynamoDbClient([ 'region' => 'us-west-2', 'version' => 'latest', 'http' => [ 'verify' => '/path/to/my/cert.pem' ]]);
http://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/configuration.html#verify
For those using WampServer, open the php.ini
file then scroll down to the bottom and add the following:
curl.cainfo = "C:\wamp\bin\php\php7.2.3\cacert.pem"
Make sure you have the cacert.pem
file in the folder of the current php version you are using. In my case, I have it in the php7.2.3
folder.
I was getting the same error If you want to use http then you can use below solution:
Error executing "PutObject" on "https://s3-ap-southeast-2.amazonaws.com/mybucketname/TestBanner1_e1d8d74e41"; AWS HTTP error: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
I have resolved it by using http method this is not secure to use secure way enter _ curl.cainfo = "/path/to/file.cacert.pem"_ in php.ini file :
Solution:
'options' => ['scheme' => 'http',],
Complete Example code:
// ...'s3bucket' => ['class' => \frostealth\yii2\aws\s3\Storage::className(),'region' => 'ap-southeast-2','credentials' => [ // Aws\Credentials\CredentialsInterface|array|callable'key' => 'JGUTEHCDE.............OSHS','secret' => 'SJEUC-----------jzy1-----rrT',],'bucket' => 'yours3bucket',//'cdnHostname' => 'http://example.cloudfront.net','defaultAcl' => \frostealth\yii2\aws\s3\Storage::ACL_PUBLIC_READ,'debug' => false, // bool|array'options' => ['scheme' => 'http',],],// ...