gpt4 book ai didi

php - 使用 PHP 中的 curl 连接到在证书包中提供过期根证书的站点

转载 作者:行者123 更新时间:2023-12-04 09:45:43 26 4
gpt4 key购买 nike

周末,Sectigo AddTrust External CA Root expired .对于现代浏览器,这应该不会对受影响站点的用户产生任何影响。

我们的 PHP 应用程序连接到我们无法控制的站点,该站点在其证书包中包含此过期的根。我们使用 curl 连接,并验证证书。但是由于这个根现在已经过期,curl 现在拒绝连接,错误是证书已过期。

有一个示例站点在 https://addtrustchain.test.certificatetest.com/ 上表现出相同的行为

表现出相同行为的示例代码是

$ch = curl_init();

$url = 'https://addtrustchain.test.certificatetest.com/';
//$url = 'https://google.com';
$caPath = '/path/to/cacert.pem';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch,CURLOPT_CAINFO, $caPath);

$output = curl_exec($ch);

var_dump($output);
var_dump(curl_getinfo($ch));
var_dump(curl_errno($ch));
var_dump(curl_error($ch));

curl_close($ch);

php 方面是否有解决方法,我们可以忽略捆绑包中提供的过期根证书?我们正在尝试与另一方的各方合作,从他们的捆绑包中删除/更新过期的根,但下次出现这种情况时,如果能从我们这边获得解决方案会很棒。

我已尝试更新我们的本地 cacert.pem 以包含实际证书本身和提供的中介,但这些似乎都不能解决问题。

最佳答案

您需要删除 AddTrust External Root来自您的 cacert.pem。

对于那些想知道的人,您可以从 Mozilla 那里获取 cacert.pem:https://curl.haxx.se/docs/caextract.html
然后您需要删除 AddTrust External Root .

删除 AddTrust External Root强制软件使用正确的路径认证(当您有多个路径认证时)。

例如,twinoid.com 有 3 个路径。其中两个是有效的,最后一个包含 AddTrust External Root . https://www.ssllabs.com/ssltest/analyze.html?d=twinoid.com&hideResults=on (您可以检查那里的 3 条路径)

关于php - 使用 PHP 中的 curl 连接到在证书包中提供过期根证书的站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62127601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com