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


94

我在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;

我使用这里描述的方法链接了证书

cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt

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

测试中

该证书可以在Safari和Chrome上正确验证,但不能在Firefox上有效。初步搜索显示,CA可能存在问题。

我探索了类似问题的答案,但是由于我不太了解每种证书的用途,因此无法找到解决方案。

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

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响应的完整细节(证书和不必要的信息将被截断)。

我也看到警告:

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

下一步

请告诉我是否有任何可以尝试的方法,或者我是否只是将整个配置错误。


10
您的域证书已由颁发者签名AlphaSSL CA - SHA256 - G2。但是,您的连锁店提供中间体AlphaSSL CA - G2。我相信您需要删除当前的中间证书(AlphaSSL CA - G2),并将其替换为带有指纹的证书ae:bf:32:c3:c8:32:c7:d7...AlphaSSL CA - SHA256 - G2)。此外,您不要需要发送GlobalSign Root CA。客户必须建立其信任(或在中间)。
jww 2014年

6
您将能够使用OpenSSL在本地进行测试。尝试openssl s_client -connect <server>:<port> -CAfile <GlobalSign Root CA.pem>。该命令应以Verify OK (0)或类似的字符完成。收到时Verify OK (0),服务器已正确配置(针对此问题)。
jww 2014年

6
当您下载新的中间体时,您需要使用将其转换为PEM openssl x509 -in gsalphasha2g2.crt -inform DER -out Alpha-SHA256-G2.pem -outform PEM
jww 2014年

美丽。我相信它现在正在工作。由于某种原因,我以为我尝试获得SHA 256,但是我一定无法正确转换它。真诚的谢谢。
Jamie Counsell 2014年

1
是的,要寻找的是回溯到根或CA的主题发行者对。OpenSSL的显示他们作为i:s:s_client。拥有所需的证书后,请合并除根证书以外的所有证书。因为它们是连续的,所以它们必须为PEM格式。该网址很有帮助。它越来越老,试图帮助那些不会提供信息的人,因此我们可以用s_client。(如果您没有提供该URL,那么我将投票关闭)。
jww

Answers:



-1

如果您是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]

这应该可以解决您的问题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.