PHP cURL 和 SSL/TLS 握手问题

问题描述 投票:0回答:1

我在尝试发出 HTTPS 请求时遇到 PHP cURL 问题。该代码运行良好,但最近开始因 SSL/TLS 握手错误而失败。我没有对代码或服务器配置进行任何更改。

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>

cURL 错误 35:SSL:握手失败

我已验证: 检查服务器 SSL 证书 - 它有效。 已验证 PHP 中启用了 cURL。 尝试了与 SSL 相关的不同 cURL 选项。

最近有人遇到过类似的 PHP cURL SSL/TLS 握手错误问题吗?任何有关可能导致此问题的原因以及如何解决该问题的见解将不胜感激。

提前致谢!

php ssl curl handshake
1个回答
0
投票

我之前遇到过类似的问题,它可能与服务器端 SSL/TLS 配置的更改有关。您可以采取以下几个步骤来排除故障并可能解决问题:

  1. 检查 cURL 版本: 确保您使用的 cURL 版本支持最新的 SSL/TLS 协议。您可以使用以下方式检查您的 cURL 版本:

    php -i | grep 卷曲

如果是过时的版本,请考虑更新到最新版本。

  1. 指定 SSL 版本:

尝试在 cURL 选项中明确指定 SSL 版本。将以下行添加到您的代码中:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
  1. 检查密码套件:

某些服务器可能需要特定的密码套件。您可以使用以下方式设置密码:

curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'ECDHE-RSA-AES128-GCM-SHA256');
  1. 验证证书:

如果您的服务器需要验证,请务必指定 CA 证书捆绑路径:

curl_setopt($ch, CURLOPT_CAINFO, '/path/to/ca-bundle.crt');

检查服务器日志: 查看服务器日志中是否有任何与 SSL/TLS 相关的错误。这可能会提供对该问题的更多见解。

请记住单独测试每个步骤,看看是否可以解决问题。如果问题仍然存在,请提供有关您的服务器环境、cURL 版本以及您最近对系统所做的任何更改的更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.