WordPress提示cURL error 60: SSL certificate…怎么修复?快速修复URL error 60: SSL certificate…报错解决办法

Wordpress3年前 (2022)发布 SUYEONE
2K 0 0

自2021年9月30日起,你可能遇到一个问题,即在安装了Let’s Encrypt证书WordPress网站上,HTTP API请求可能会停止运作。这可能导致如下的错误提示:

“`
cURL error 60: ssl certificate problem: certificate has expired
“`

这个错误会在多种情况下发生,比如检查WordPress更新、插件更新,或者当你的网站尝试访问任何API服务,如TinyPNG图像压缩等涉及HTTP请求的插件。

出现这个过期证书错误的原因在于,WordPress核心有一个名为`/wp-includes/certificates/ca-bundle.crt`的根证书文件,它用于验证所有HTTP API请求的SSL。然而,这个文件中用于签发你网站证书的一个根证书已经过期,导致验证失败并抛出错误。

更深入地解释,由于信任链机制,系统在验证证书时依赖于一个受信任的根证书存储库。Let’s Encrypt在初期使用DST Root CA X3作为中间信任链的一部分,而这个根证书现已过期。ISRG Root X1是Let’s Encrypt的根证书,但它需要时间才能被所有系统广泛接受。因此,一些系统在验证Let’s Encrypt证书时会出现问题。

即使未来的WordPress更新(如WordPress 5.9)会解决这个问题,如果你现在就需要一个解决方案,或者你不打算立即更新WordPress,你可以采取以下两种方法:

1. **手动替换证书**:
– 下载`https://cURL.se/ca/cacert.pem`。
– 更新`/wp-includes/certificates/ca-bundle.crt`文件内容,用新下载的证书替换原有内容。
– 错误应该会消失。

2. **使用代码片段修复**:
– 在你的主题`functions.php`文件或代码片段插件中添加以下代码:
“`php
/*
* 自动更新WordPress CA证书包
* Source: https://zhujicankao.com/66350.html
*/
if( isset( $_GET[‘update-wp-ca-bundle’] ) ){

$crt_file = ABSPATH . WPINC . ‘/certificates/ca-bundle.crt’;
$new_crt_url = ‘http://curl.haxx.se/ca/cacert.pem’;

if( is_writable( $crt_file ) ){
$new_str = file_get_contents( $new_crt_url );

if( strpos( $new_str, ‘Bundle of CA Root Certificates’ ) !== false ){
$up = file_put_contents( $crt_file, $new_str );

echo $up ? ‘OK: ca-bundle.crt updated’ : ‘ERROR: can`t put data to ca-bundle.crt’;
}
else {
echo ‘ERROR: can\’t download curl.haxx.se/ca/cacert.pem’;
}
}
else {
echo ‘ERROR: ca-bundle.crt not writable’;
}

exit;
}
“`
– 访问`http://yourdomAIn.com/?update-wp-ca-bundle`(将`yourdomain.com`替换为你的域名)来触发更新。
– 完成后,错误应已修复,你可以移除添加的代码。

通过以上任一方法,你应该能够解决cURL错误60并恢复HTTP API请求的正常运行。

© 版权声明

相关文章

暂无评论

暂无评论...
☺一键登录开启个人书签等功能!