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

Security SSL错误:无法获取本地颁发者证书,security,ssl,https,openssl,ssl-certificate,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_pro

在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;
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
我使用描述的方法链接了我的证书

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

测试 证书可以在Safari和Chrome上正确验证,但不能在Firefox上正确验证。初步调查显示,这可能是CA的问题

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

我使用openssl的_客户机来测试连接,并接收到的输出似乎表明了与之相同的问题。错误如下:

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;
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来解决此问题,但收到了相同的错误。我使用
updateca 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
下一步
请告诉我是否有什么我可以尝试的,或者我只是整个配置不正确。

jww是正确的-您引用了错误的中间证书

由于您已获得SHA256证书,您将需要SHA256中级证书。您可以从这里获取它:

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

这将解决您的问题

您的域证书由颁发者签名
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
。客户机必须以根用户身份建立其信任(或在中间用户上)。您可以使用OpenSSL在本地测试这一点。请尝试
openssl s_客户端-连接:-CAfile
。该命令应以
验证正常(0)
或类似命令完成。当您获得
Verify OK(0)
时,服务器已正确配置(针对此问题)。当您下载新的中间版本时,您需要使用
openssl x509-在gsalphasha2g2.crt中-通知DER-out Alpha-SHA256-G2.PEM-outform PEM
将其转换为PEM。我相信它现在起作用了。出于某种原因,我认为我试图得到一个SHA 256,但我一定是未能正确转换它。真诚地感谢您。是的,要查找的是返回根目录或CA的主题-颁发者对。OpenSSL将它们显示为
i:
s:
下的
s\u客户端
。一旦你有了你所需要的证书,除了根证书之外,把所有证书都保存起来。因为它们是浓缩的,所以需要采用PEM格式。URL很有用。试图帮助那些不愿提供信息的人,这样我们就可以用
s\u客户机
在本地查看信息,这已经过时了。(如果你没有提供URL,我会投票关闭)。