Laravel 10使用AWS SES API发邮件遇SSL证书错误求助
解决Laravel使用AWS SES API发送邮件时的cURL错误60问题
问题根源:本地PHP环境缺少可信的SSL根证书,导致AWS SDK无法验证SES API的SSL证书(SMTP方式成功是因为其证书验证逻辑不同)
解决方案(按优先级排序):
配置PHP信任SSL根证书(生产环境推荐)
- 下载Mozilla维护的根证书集合,保存为
cacert.pem文件 - 打开PHP的
php.ini配置文件,找到以下两个配置项,设置为证书文件的绝对路径:curl.cainfo = "/path/to/your/cacert.pem" openssl.cafile = "/path/to/your/cacert.pem" - 重启你的Web服务器(比如Apache/Nginx)或PHP-FPM服务
- 验证:执行
php -i | grep "curl.cainfo"确认配置生效
- 下载Mozilla维护的根证书集合,保存为
临时关闭AWS SDK的证书验证(仅测试用,禁止生产环境)
- 打开Laravel项目的
config/services.php,找到ses配置段,添加'verify' => false:'ses' => [ 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 'verify' => false, ], - 清除配置缓存:
php artisan config:clear
- 打开Laravel项目的
检查证书文件权限(Linux环境)
- 确保
cacert.pem文件的权限允许Web服务器用户(比如www-data、nginx)读取:chmod 644 /path/to/your/cacert.pem chown www-data:www-data /path/to/your/cacert.pem
- 确保
额外注意:
- 确认
.env文件中的AWS_DEFAULT_REGION和你的SES服务所在区域完全一致(比如us-west-2、ap-southeast-1) - 不需要更换AWS SDK包,权限配置已经足够,问题核心是SSL证书验证
- 确认
内容的提问来源于stack exchange,提问作者nasirkhan
相关产品推荐
相关产品推荐

