编程语言
首页 > 编程语言> > 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 证书提供商或您的服务器管理员以获取支持。

标签:
来源: