【发布时间】:2020-09-19 11:32:53
【问题描述】:
周末,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 以包含实际证书本身以及提供的中介,但这些似乎都不能解决问题。
【问题讨论】:
-
刚刚快速搜索并找到了agwa.name/blog/post/fixing_the_addtrust_root_expiration - 抱歉,不知道它是否有帮助,但可能有用。
-
谢谢。是的,这是同一个问题,但目前建议的修复方法似乎对我不起作用。
-
事实证明,虽然这在我的本地环境中对我不起作用,但对团队中的其他人确实有效,并且看起来在生产环境中也有效。干杯。