I'm currently building a Wordpress install under a debian server. I install PHP7, curl and Apache2
While I'm trying to install new extension I have this error message :
cURL error 60: SSL certificate problem: self signed certificate in certificate chain
I try to modify the php.ini with this, after reading some post treating similar issue :
curl.cainfo = /etc/php7.0/cacert.pem
But I'm still facing the problem even with restart apache.
Any ideas ?
Thanks in advance
答案 0 :(得分:1)
下载此文件http://curl.haxx.se/ca/cacert.pem
使用您的文件位置
openssl.cafile=c:/cacert.pem
答案 1 :(得分:1)
根据我最近的经验,我认为证书链中的“自签名证书”消息确切地告诉您问题 - 您尝试访问的哪个SSL站点都有证书不在 cacert.pem 引用的束中的链。
这是有道理的,因为错误报告它是自签名证书。即它永远不会包含在下载的cacert.pem文件中。
我的解决方案是获取 Base64 编码文件,其中包含我尝试访问的网站的证书链。
How to: Use a browser to access the site you are trying to access, click the
certificate part of the address (usually to the left of the address box with
a lock icon) and the click on whatever your interface supports to see the
list of certificates in the chain. Manually export those certificates to a
text file.
然后使用文本编辑器将此文本文件附加到PHP用于CURL操作的证书列表(cacert.pem)。
你提到WordPress .. WordPress v4.9.6有一套证书,它在升级或安装插件时专门引用./WordPress Instance \ wp-包括\证书。我的临时解决方案是将上面的文本文件(包含本地自签名证书链)附加到您将在该位置找到的 ca-bundle.crt 文件中。
一个警告 - 当您升级WordPress时,它将覆盖 ca-bundle.crt 文件,因此您必须重新添加它们 - 除非有人有更好的解决方案..?
答案 2 :(得分:0)
将'sslverify'设置为false可修复cURL错误60:WordPress wp_remote_get请求中的SSL证书。
wp_remote_get($url, array('sslverify' => FALSE));
答案 3 :(得分:0)
WordPress使用它自己的CA捆绑包,位于WP/wp-includes/certificates
中。
直到本期讨论的https://core.trac.wordpress.org/ticket/45807为止,WordPress附带的CA软件包已经过时了。
不建议将sslverify
设置为false
,而是可以下载捆绑软件的更新版本https://github.com/WordPress/WordPress/tree/master/wp-includes/certificates并将其替换在wordpress文件夹中。
答案 4 :(得分:0)
万一有人在本地计算机上安装WordPress遇到相同的问题,可以通过添加http_request_args
过滤器为我解决问题
<?php
/**
* Plugin Name: Local Dev CaFile
* Plugin URI: https://stackoverflow.com/q/44632619/881743
* Description: Another solution for `SSL certificate problem: self signed certificate in certificate chain apache` error for your local development
* Version: 1.0
* Author: John Doe
* Author URI: https://stackoverflow.com/
* License: WTFPL
*/
add_filter( 'http_request_args', function ( $args ) {
if ( getenv('WP_ENV') !== 'development' ) {
return $args;
}
$args['sslcertificates'] = ini_get( 'curl.cainfo' ) ?? $args['sslcertificates'];
return $args;
}, 0, 1 );
将其保存在path/to/wp-content/plugins/dev-plugin.php
中,然后从wp-admin激活插件,或者可以选择将其放入WPMU_PLUGIN_DIR
。
希望有帮助 干杯
答案 5 :(得分:0)
在您的测试站点中禁用 SSL 验证。
您可以通过将此行添加到文件中来做到这一点
外观 > 主题编辑器 > functions.php 或
/wp-content/themes/YOUR_THEME/functions.php:
add_filter('https_ssl_verify', '__return_false');
仅在测试站点上添加此内容,切勿在实时站点上添加。