SSL错误:无法获取本地颁发者证书

时间:2014-06-23 18:34:09

标签: security ssl https openssl ssl-certificate

我在Debian 6.0 32位服务器上配置SSL时遇到问题。我对SSL比较新,所以请耐心等待。我尽可能多地提供信息 注意:已更改真实域名以保护服务器的身份和完整性。

的配置

服务器正在使用nginx运行。配置如下:

ssl_certificate           /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key       /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols             SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers               HIGH:!aNULL:!MD5;
ssl_verify_depth          2;

我使用here

描述的方法链接了我的证书
cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt

其中mysite.ca.crt是签名机构提供给我的证书,bundle.crt是我的签名机构发给我的CA证书。问题是我没有直接从GlobalSign购买SSL证书,而是通过我的托管服务提供商Singlehop购买。

测试

证书在Safari和Chrome上正常验证,但在Firefox上验证不正确。初步搜索显示它可能是CA的问题。

我探讨了similar question的答案,但无法找到解决方案,因为我不太了解每个证书的用途。

我使用openssl的s_client来测试连接,并收到输出,这似乎表明与the similar question相同的问题。错误如下:

depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1

可以找到openssl响应的完整详细信息(包含证书和不必要的信息被截断)here

我也看到警告:

No client certificate CA names sent

这可能是问题所在吗?如何确保nginx发送这些CA名称?

尝试解决问题

我试图通过直接从GlobalSign下载根CA来解决问题,但收到了同样的错误。我使用update-ca-certificates命令在我的Debian服务器上更新了根CA,但没有任何改变。这可能是因为从我的提供商发送的CA是正确的,因此它导致证书被链接两次,这没有帮助。

0 s:/OU=Domain Control Validated/CN=*.mysite.ca
   i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA

后续步骤

如果我有什么可以尝试的,或者我只是错误地配置了整件事,请告诉我。

2 个答案:

答案 0 :(得分:43)

jww是对的 - 你引用了错误的中间证书。

当您获得SHA256证书时,您将需要SHA256中间件。你可以从这里抓住它:http://secure2.alphassl.com/cacert/gsalphasha2g2r1.crt

答案 1 :(得分:-5)

如果您是Linux用户 通过运行将节点更新到更高版本

sudo apt update

 sudo apt install build-essential checkinstall libssl-dev

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.1/install.sh | bash

nvm --version

nvm ls

nvm ls-remote

nvm install [version.number]

这应该可以解决您的问题