在WordPress更新中,SSL证书验证通过纯HTTP(非SSL)失败

时间:2016-01-08 20:17:32

标签: php wordpress http ssl

我正在尝试更新WordPress本身以及插件和主题。

  

更新WordPress下载更新   http://downloads.wordpress.org/release/wordpress-4.4.1-new-bundled.zip ...

     

下载失败:SSL证书问题,验证CA证书是否存在   好。详细信息:错误:14090086:SSL   例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

     

安装失败

我在这里读到:https://help.github.com/articles/error-ssl-certificate-problem-verify-that-the-ca-cert-is-ok/

  

当您收到此错误时,可能意味着您的CA已过期且需要更新。通常,更新操作系统也会更新CA,并解决问题。

我向主人寻求帮助,他们说:

  

我在您发送的链接中获得了基础参考。但是根   证书颁发机构仅在您使用ssl时适用   站点/证书。

     

您发送的屏幕截图中的插件升级路径是http   仅基于网站 - 这就是为什么我没有得到相关性。如果你是   调用http链接时,不使用ssl,并且不相关。

但是,此请求是通过HTTP进行的,并且未使用SSL。为什么我会收到此错误?

4 个答案:

答案 0 :(得分:2)

所有wordpress.org都是基于SSL的网站。任何HTTP请求只是通过他们的nginx实例通过HTTPS路由,可能有这样的规则:

server {
       listen         80;
       server_name    my.domain.com;
       return         301 https://$server_name$request_uri;
}

答案 1 :(得分:1)

以下是下载时发生的事情:

wget http://downloads.wordpress.org/release/wordpress-4.4.1-new-bundled.zip
--2016-01-11 14:40:07--  http://downloads.wordpress.org/release/wordpress-4.4.1-new-bundled.zip
Resolving downloads.wordpress.org... 66.155.40.188, 66.155.40.189, 66.155.40.187, ...
Connecting to downloads.wordpress.org|66.155.40.188|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://downloads.wordpress.org/release/wordpress-4.4.1-new-bundled.zip [following]
--2016-01-11 14:40:07--  https://downloads.wordpress.org/release/wordpress-4.4.1-new-bundled.zip
Connecting to downloads.wordpress.org|66.155.40.188|:443... connected.
ERROR: cannot verify downloads.wordpress.org's certificate, issued by `/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2':
  Unable to locally verify the issuer's authority.
To connect to downloads.wordpress.org insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.

所有下载都被重定向到ssl,证书由Go Daddy最新的CA root签名。

here下载wordpress git网站的最新证书,将其保存到wp-includes / certificates目录中作为ca-bundle.crt,确保下载的.crt替换当前的.crt,然后再次尝试更新

答案 2 :(得分:0)

您对该文件的链接会重定向到HTTPS。您可以在http://www.redirect-checker.org

看到它的实际效果
  

祝贺。一切似乎都很好。

     

http://downloads.wordpress.org/release/wordpress-4.4.1-new-bundled.zip
  301永久移动
  https://downloads.wordpress.org/release/wordpress-4.4.1-new-bundled.zip
  200 OK

至于您为什么会收到该错误,您的服务器无法验证证书,因为它无法获得正确的链(CA)。正如see here所示,wordpress.org已正确配置。显然,您的服务器不会信任服务器提供的链。最有可能的是,它被配置为仅接受已安装的CA.

有几种方法可以玩这个。两者都涉及转到GoDaddy Repository并下载Go Daddy安全证书颁发机构 - G2文件(它应该是this file)。

现在,您需要做的是

  1. 请您主持人在其服务器上安装此链文件。如果您将它们指向存储库,它们应该为您执行此操作。这应该是微不足道的。
  2. 破解WP更新脚本以直接使用CA链。我的赌注是它使用this file中的CURL请求来进行请求。它可能是另一个文件。您可以告诉执行下载的脚本使用该CA文件。这对你来说不是一个好的解决方案,因为你可能每次都必须破解该脚本。

答案 3 :(得分:0)

我也遇到了Wordpress 4.4.1的301问题,这似乎有不同的原因,但我的研究也从版本变更日志中得出结论:

Removed SSL certificates causing errors in WP 4.4

完整发行说明: Wordpress Version 4.4.1

在差异中你也可以看到很多证书从中删除:

/wp-includes/certificates/ca-bundle.crt