最近不少WordPress网站都出现了cURL error 60: SSL certificate problem: certificate has expired错误,导致安装SSL证书或者一些插件失败,本文分享一下解决办法。
出现这个原因是因为Let’s Encrypt 证书停止了HTTP API的请求支持,导致我们使用Let’s Encrypt 证书的网站没办法更新证书,就出现了证书过期的提醒,所以我们只需要手动更新下证书就行了。
解决方法一,手动替换证书:
1、下载https://curl.se/ca/cacert.pem 这个文件;
2、将cacert.pem里面的内容替换到/wp-includes/certificates/ca-bundle.crt 这个文件里面。
然后就不会出现证书过期的提醒了。
解决方法二,代码替换证书:
如果手动替换你觉得麻烦,也可以使用下面的代码进行替换。
首先,把下面的代码复制,然后粘贴到你主题的函数文件里,保存。
/** * 保存代码后访问 http://你网址/?update-wp-ca-bundle */ 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( $new_str && strpos( $new_str, 'Bundle of CA Root Certificates' ) ){ $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://你网址/?update-wp-ca-bundle 提示更新成功就可以了。
解决方法三,插件替换证书:
上面两种解决方法觉得麻烦,那么可以直接在WP后台安装一个SSL Certificate Manager插件来解决。