3

First and foremost, I am a total noob when it comes to using Amazon's SDK for PHP so bare with me. I am trying to follow along with a video tutorial on how to upload a file to an AWS S3 bucket using PHP and the AWS SDK.

I have all of the correct information to start the process but I get the following error when trying to upload the file on my localhost instance:

Error uploading files: Error executing "PutObject" on "https://bregg.s3.amazonaws.com/uploadme.txt"; AWS HTTP error: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://bregg.s3.amazonaws.com/uploadme.txt

Why is AWS looking for a SSL local issuer cert on my dev laptop?

Many thanks in advance for any help!

This error happens after I hit the upload button on the webpage.

2
  • It's easier to understand the issue if you provide your current code. Commented Feb 12, 2024 at 7:28
  • I will work on getting that. Thanks! Commented Feb 19, 2024 at 15:01

1 Answer 1

4

cURL is looking for an ssl certificate in your local installation. There are two ways to solve the issue. It depends on the one you prefer.

Option 1

If you are using Laravel, tell your software not to use https when uploading to AWS s3 disk. To do this, head over to config/filesystems.php and add 'scheme' => 'http', in 's3' array. Assuming you have a fresh laravel installation, your new s3 array will now look like below:

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL'),
        'endpoint' => env('AWS_ENDPOINT'),
        'scheme'  => 'http',
    ],

That is all you need to do. Go ahead and upload your file.

Option 2

Download cacert.pem and update your php.ini.

To do this, head over to https://curl.haxx.se/ca/cacert.pem and download the cacert.pem file. Copy the file to your php version folder (on Windows, this might look like C:\wamp64\bin\php\php8.3.0 or wherever you installed your WAMP or Xampp). After that, note the location of the file.

Go to your your php.ini file and search for the line containing curl.cainfo.

Update that line to curl.cainfo = "C:\wamp\bin\php\php7.2.3\cacert.pem".

Go ahead and upload your files.

Note:

The above two methods are just for development purposes only. Option 1 actually disables the need for ssl in your requests to AWS while option 2 does not replace the need for an actual SSL Certificate. While going to production, remember to disable option 1 and get your website secured with an SSL certificate.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.