我被要求使用 php 5.2.6 实现 OIDC,但在 fetchURL:curl_setopt($ch, CURLOPT_URL $url);if (isset($this->certPath)){... 期间遇到“连接中出现未知的 SSL 协议错误”
我被要求使用 php 5.2.6 实现 OIDC,但在 fetchURL 期间遇到“连接中出现未知的 SSL 协议错误”:
curl_setopt($ch, CURLOPT_URL $url);
if (isset($this->certPath)){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, $this->certPath);
}
else{
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
if (curl_exec($ch) === false{
throw new OpenIDConnectioClientException('Curl error: ' . curl_error($ch));
}
已搜索并尝试了以下操作,但没有帮助
-
设置我们 IT 部门提供的 CA 文件 (cacert.pem)
-
将 VERIFYPEER / VERIFYHOST 设置为 False
-
使用不同的 SSLVERSION(DEFAULT / TLSv1 / SSLv2、SSLv3、TLSv1_0、TLSv1_1、TLSv1_2)
-
设置 VERBOSE 但没有更详细的消息
目前,只有这些操作才能得到目标服务的响应:
-
使用 php curl,将 url 的开头设置为 http 而不是 https
-
使用 Windows curl,带参数 -k 或 --ssl_no_revoke
-
使用 IT 提供的 cacert.pem 和 linux curl
我希望 php 使用 curl 和 CA 文件应该没问题(就像我在 linux curl 中所做的那样),有谁知道为什么不同的系统会出现不同的结果以及如何解决这个问题?非常感谢!
版本:
-
php 5.2.6 和 curl 7.16.0
-
Windows curl 8.0.1(Windows)libcurl/8.0.1 Schannel WinIDN
-
Linux curl 7.68.0(x86_64-pc-linux-gnu)libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0(+libidn2/2.2.0)libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
连接到服务器名称时出现未知 SSL 协议错误:443
下载声明:
本站所有软件和资料均为软件作者提供或网友推荐发布而来,仅供学习和研究使用,不得用于任何商业用途。如本站不慎侵犯你的版权请联系我,我将及时处理,并撤下相关内容!