标签:
在 PHP 7.4 中遇到 error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
错误时,通常是由于 SSL 证书验证失败。以下是一些解决该问题的方法:
1. 检查 OpenSSL 扩展是否启用
确保您的 PHP 环境中已启用 OpenSSL 扩展。您可以运行以下命令确认:
php -m | grep openssl
Bash
如果没有显示出 openssl
,您需要在 php.ini
文件中启用它:
extension=openssl
Ini
2. 更新 CA 证书
SSL 证书验证失败的一个常见原因是您的 CA 证书库过期或缺失。可以通过以下方式更新 CA 证书:
对于 Ubuntu/Debian
sudo apt-get update
sudo apt-get install --reinstall ca-certificates
Bash
对于 CentOS/RHEL
sudo yum reinstall ca-certificates
Bash
更新 CA 证书后,确保重新启动 Web 服务器。
3. 使用一个 SSL 上下文
您可以在创建 SSL 连接时,使用自定义的 SSL 上下文来控制验证行为。比如禁用证书验证(不推荐在生产环境中使用):
$context = stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
),
));
$fp = stream_socket_client("ssl://example.com:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
PHP
4. 提供自定义 CA 文件
你可以使用自定义 CA 证书,比如:
$context = stream_context_create(array(
'ssl' => array(
'verify_peer' => true,
'cafile' => '/path/to/ca-bundle.crt', // 自定义 CA 文件路径
),
));
$fp = stream_socket_client("ssl://example.com:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
PHP
确保您提供的 CA 文件是有效的。
5. 检查 SSL 证书的有效性
使用 SSL Labs 或其他工具检查目标服务器的 SSL 证书,确保其没有过期以及中间证书链的完整性。
6. 确保使用最新的 PHP 和 OpenSSL 版本
确保您的 PHP 和 OpenSSL 是最新版本,因为新版本中可能修复了一些证书验证的问题。
7. 查看错误日志
检查 PHP 和 Web 服务器的错误日志,可能会提供更多的上下文信息,帮助您诊断问题。
通过以上步骤,您应该能够解决 SSL routines:ssl3_get_server_certificate:certificate verify failed
错误。如果问题仍然存在,请考虑联系 SSL 证书提供商或您的服务器管理员以获取支持。
标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。