Laravel发送邮件报错:STARTTLS连接失败,证书验证错误
解决STARTTLS连接时的SSL证书验证失败问题
遇到这个错误,核心是邮件服务器的SSL证书无法被PHP环境正常验证,仅添加'auth_mode' => null, 'verify_peer' => false未必能解决,试试以下针对性方案:
补全服务器证书链:很多时候是服务器只返回了叶证书,缺少中间证书导致验证断裂。去邮件服务器的证书管理页面下载完整证书链(合并根证书、中间证书、叶证书为一个.pem文件),然后在邮件配置中指定:
'cafile' => '/绝对路径/到/fullchain.pem'修正PHP的CA证书配置:检查php.ini文件,确保
openssl.cafile指向系统信任的CA证书集合:- Linux系统一般是
/etc/ssl/certs/ca-certificates.crt - Windows可从curl官网下载cacert.pem,设置
openssl.cafile = "C:\指定路径\cacert.pem"
修改后重启PHP服务生效。
- Linux系统一般是
指定兼容的TLS版本:部分老旧邮件服务器不支持最新TLS协议,强制指定TLSv1.2或TLSv1.3尝试:
'ssl' => [ 'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT ]完善跳过验证的配置:若仅为临时测试需要关闭验证,除
verify_peer外还需添加verify_peer_name:'verify_peer' => false, 'verify_peer_name' => false注意:此操作会关闭证书校验,存在安全风险,仅用于排查问题,生产环境禁止使用。
内容的提问来源于stack exchange,提问作者Askfromali
相关产品推荐
相关产品推荐

