首页 > 编程语言> > Php 7.4 错误 error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed?
Php 7.4 错误 error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed?
作者:互联网
在 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 证书提供商或您的服务器管理员以获取支持。
标签: 来源: