ssl - 在威瑞信SSL握手将失败,并- -,其中包含两个CA签名证书,一个自签署的证书链证书

  显示原文与译文双语对照的内容
0 0

我遇到了一个问题,试图调试它。 我们购买了一个verisign证书。 当我们使用的时候,可以使用> s_client -connect myweb.com:443 -showcerts

SSL握手永远不会完成,最后我们会看到错误:

验证返回码: 19 ( 证书链中自签名证书)

显示 3 ---begin/词尾CERTIFICATE---标记。 链中的两个证书是Verisign签名的,但一个是自签名的。

1 ) 如果有人可以解释这个self-signed证书如何在一个CA签名证书中显示?

2 ) 这里错误 19 ( 证书链中自签名证书) 良性? 如果不是,可能是什么引起的?

3 ) 客户端在可信存储中拥有CA证书,但没有self-signed证书。 你认为这会引起问题? 如果是,如何处理 I:如何从链证书中删除self-signed证书只留下 2个证书在链中签名的证书? 在客户端信任存储中添加这个自签名证书?

感谢你的时间和帮助。

时间: 原作者:

0 0

由CAs颁发的root 证书只是self-signed证书( 这又可以用来颁发中间的CA证书) 。 它们没有什么特别的地方,只是它们在许多浏览器或者操作系统信任标记中被默认导入。

虽然浏览器和一些工具被配置为在默认情况下查找受信任的CA证书( 其中一些可能是 self-signed ),但据我所知 openssl 命令不是。

因此,任何呈现完整证书链的服务器,从它的end-entity证书( 证书) 到 root CA证书( 可能使用中间CA证书)的服务器,将在链中拥有self-signed证书: root CA 。

openssl s_client -connect myweb.com:443 -showcerts 没有任何信任 root CA证书的特殊理由,因为它是 self-signed,你将得到"自签署证书的证书链"。

如果你的系统有一个由默认( 我认为 /etc/pki/tls/certs 上的/fedora和 ubuntu/debian上的/etc/ssl/certs ) 信任的证书包的位置,你可以配置OpenSSL以将它的用作信任锚,例如:


openssl s_client -connect myweb.com:443 -showcerts -CApath/etc/ssl/certs

原作者:
0 0

似乎中间证书丢失了。 2006年04月, 所有的ssl证书verisign需要安装一个中间的ca颁发的证书。

可能你的服务器上没有加载整个证书链。 有些企业不允许他们的计算机下载额外的证书,导致无法完成SSL握手。

下面是一些关于中间链的信息:
https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=AR657
https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=AD146

中级CA证书

原作者:
0 0

下面是证书安装检查器的SSL链接: https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=AR1130

输入你的URL,点击"测试这里站点服务器",它会告诉你中间证书颁发机构是否有问题。

原作者:
0 0

当你看到" Verify return code: 19 (self signed certificate in certificate chain) ",那么,要么服务器真的尝试使用self-signed证书( 一个客户永远不能验证),要么OpenSSL没有访问必要的root,但是服务器试图提供它本身( 它不应该这样做,因为它没有意义- 客户端永远不能信任服务器来提供与服务器证书对应的root ) 。

同样,添加-showcerts有助于你诊断。

原作者:
0 0

关于服务器可以传递给客户端的root 证书,从 RFC-5246'传输层安全性( TLS ) 协议 1.2的协议中提取出来:

certificate_list
这是一个序列号( 链) 。 发件人证书必须在列表中首先出现。 每个下列证书必须直接验证它的前面的证书。 因为证书验证需要独立分发 root 键,指定 root 证书权威可能 self-signed证书链,从以下省略
远程端必须已经拥有它以便在任何情况下验证它。

关于'可能'这个术语,从 RFC-2119"最佳当前练习"中提取:

5.MAY
这个词或者形容词"可选"意味着一个项目是真正可选的。 一个供应商可以选择包含该项目,原因是
特定市场需要它或者因为供应商觉得
它增强了产品,而另一个供应商可能省略了相同的项目。
不包括特定选项的实现必须是
准备与另一个实现进行互操作,该实现
包含这里选项,但可能使用了缩减的功能。 同样的情况下,一个包含特定选项的实现
必须准备与另一个实现进行互操作,该实现
不包括选项( 当然,除了用于
选项提供。)

总之,root 可能位于服务器在握手时传递的证书路径。

一个实用的用法。
考虑,而不是在导航用户术语中,而是在militarized区域的服务器上具有限制互联网访问的转换工具。
在传输时扮演客户端角色的服务器接收来自服务器的所有证书路径。
应该检查链中的所有证书是否可信,包括 root 。
检查这一点的唯一方法是在传输时将 root 包含在证书路径中,与以前声明的'信任的'本地副本匹配。

原作者:
...