WORDPRESS : cURL 错误 60: SSL 证书
Posted
技术标签:
【中文标题】WORDPRESS : cURL 错误 60: SSL 证书【英文标题】:WORDPRESS : cURL error 60: SSL certificate 【发布时间】:2017-11-21 18:59:25 【问题描述】:我目前正在 debian 服务器下构建 Wordpress 安装。我安装 php7、curl 和 Apache2
当我尝试安装新的扩展程序时,我收到以下错误消息:
cURL error 60: SSL certificate problem: self signed certificate in certificate chain
在阅读了一些处理类似问题的帖子后,我尝试用这个来修改 php.ini:
curl.cainfo = /etc/php7.0/cacert.pem
但即使重新启动 apache,我仍然面临这个问题。
有什么想法吗?
提前致谢
【问题讨论】:
检查文件路径/etc/php7.0/cacert.pem
它所在的位置
Curl error 60, SSL certificate prðblem: self signed certificate in certificate chain的可能重复
我检查了文件路径,很好:/
【参考方案1】:
将 'sslverify' 设置为 false 以修复 cURL 错误 60:WordPress wp_remote_get 请求中的 SSL 证书。
wp_remote_get($url, array('sslverify' => FALSE));
【讨论】:
在哪里添加这个? 非常好的解决方案!它解决了我的问题!太棒了!【参考方案2】:WordPress 使用它自己的 CA 包,位于 WP/wp-includes/certificates
。
直到最近,WordPress 附带的 CA 包已经过时,如本期所述:https://core.trac.wordpress.org/ticket/45807。
不建议将sslverify
设置为false
,您可以下载捆绑包的更新版本https://github.com/WordPress/WordPress/tree/master/wp-includes/certificates 并将其替换到wordpress 文件夹中。
【讨论】:
您所说的 Github 链接中的 CA 捆绑包对我不起作用(重新启动本地 apache 和所有内容)。只有设置 'sslverify' => FALSE 做了...【参考方案3】:在您的测试站点中禁用 SSL 验证。
您可以通过将此行添加到文件中来做到这一点
外观>主题编辑器>functions.php或
/wp-content/themes/YOUR_THEME/functions.php:
add_filter('https_ssl_verify', '__return_false');
仅在测试站点上添加此内容,切勿在实时站点上添加。
【讨论】:
【参考方案4】:根据我最近的经验,我相信“证书链中的自签名证书”消息可以准确地告诉您问题 - 您尝试访问的任何 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 文件,因此您必须重新添加它们 - 除非有人有更好的解决方案..?
【讨论】:
这正是对我有用的。我知道问题在于它是自签名的,我只是不知道如何说服 WordPress 这没关系。您的解决方案是唯一有效的解决方案。对于在本地安装 WordPress 时遇到此问题的任何人,这就是解决方案。【参考方案5】:如果有人在本地机器上安装 WordPress 时遇到同样的问题,添加 http_request_args
过滤器对我有用
<?php
/**
* Plugin Name: Local Dev CaFile
* Plugin URI: https://***.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://***.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
。
希望有所帮助 干杯
【讨论】:
【参考方案6】:下载此文件http://curl.haxx.se/ca/cacert.pem
使用您的文件的位置
openssl.cafile=c:/cacert.pem
参考 - https://github.com/auth0/auth0-PHP#i-am-getting-curl-error-60-ssl-certificate-problem-self-signed-certificate-in-certificate-chain-on-windows
【讨论】:
@Nathan30 wordpress 版本? 最新的 Wordpress 4.8 @Nathan30 只需下载 4.7.5 版本的 wordpress 并将 /wp-includes/certificates/ca-bundle.crt 复制到您的服务器。保留旧文件的备份。 做到了,但仍然是同样的问题:/ 我必须把它放在哪里?在哪个 wordpress 文件上?【参考方案7】:从 wp-cli 2.4 升级 => 2.5 帮助了我。 (安装此https://github.com/wp-cli/profile-command)
【讨论】:
【参考方案8】:这里没有一个答案对我有用(并且可能不适用于在他们的服务器上使用 Let's Encrypt 证书的人)。我发现最近(2021 年 9 月 30 日)Let's Encrypt Cretificates 过期了 DST Root CA X3。除了 curl 错误 60 之外,我还遇到了 Rest API 错误并且无法在 wordpress 中更新插件。可以在 wordpress 安装中更新这些:
该补丁可在此处获得,如果不是更早的话,应该与 Wordpress 5.9(2021 年 12 月)一起提供: https://core.trac.wordpress.org/changeset/51883/trunk/src/wp-includes/certificates/ca-bundle.crt
【讨论】:
以上是关于WORDPRESS : cURL 错误 60: SSL 证书的主要内容,如果未能解决你的问题,请参考以下文章
curl: (60) Peer's Certificate has expired
Laravel 5.2 社交名媛 Facebook 登录 cURL 错误 60