Logicky Blog

Logickyの開発ブログです

Laravel11でAmazonSESのメール送信しようとしたらエラーになった

エラーは下記です。

Request to AWS SES API failed. Reason: Error executing "SendRawEmail" on "https://email.ap-northeast-1.amazonaws.com"; 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://email.ap-northeast-1.amazonaws.com.

このエラーは、Laravelを使ってAmazon SESでメールを送信しようとしたときに、SSL証明書の問題が発生していることを示しています。具体的には、cURLがローカルの発行元証明書を取得できず、SSL接続を確立できないというエラーです。

証明書をダウンロードして、~/.sshに置く

自分はWindows11のPowerShellです。

> curl -o cacert.pem https://curl.se/ca/cacert.pem
> Move-Item -Path .\cacert.pem -Destination $HOME\.ssh\cacert.pem

php.iniを修正

php.iniの場所を確認

> php --ini
Configuration File (php.ini) Path: 
Loaded Configuration File:         C:\tools\php83\php.ini
> code C:\tools\php83\php.ini

php.iniにcacert.pemのパスを追加

curl.cainfo = "C:/Users/dev/.ssh/cacert.pem"
openssl.cafile = "C:/Users/dev/.ssh/cacert.pem"