Rei*_*ert 6 linux certificate ssl
背景:
问题:
连接的证书链似乎是正确的,但验证失败。
openssl s_client myhost:port
Run Code Online (Sandbox Code Playgroud)
显示证书链和颁发者-主体对通过链正确排列,但是:
verify error:num=19:self signed certificate in certificate chain
Run Code Online (Sandbox Code Playgroud)
openssl 不接受根 CA 证书,尽管默认情况下可以在 Ubuntu 服务器信任库中找到它。
具体来说:
AddTrustExternalCARoot.crt从 COMODO 收到的每封电子邮件以及
/etc/ssl/certs/AddTrust_External_Root.pem哪些链接
/usr/share/ca-certificates/mozilla/AddTrust_External_Root.crt
是相同的。
这里有什么问题?
OpenSSL 至少到当前(1.0.2a)有一个错误,即s_client使用 NO-CA{path,file}参数实际上并没有按应有的方式使用默认信任库,因此无法根据该信任库验证有效的证书。(还有s_server和s_time,但很少关心这些验证。)请参阅https://serverfault.com/questions/607233/how-to-make-openssl-s-client-using-default-ca。开发人员已宣布修复,但可能需要一些时间才能发布和分发。与此同时,您需要明确指定-CA*参数。请注意,openssl verify没有此错误,因此正确地将证书/链报告为有效。
2015/08/26更新:修复已于2015/06/12 在 1.0.1o 和 1.0.2c 中发布。另外,在调查其他事情时,我发现RedHat 软件包可能没问题。更具体地说,据我了解,CentOS 源 RPMopenssl-1.0.1e-30.el6.11是 RedHat 源 RPM 的副本(但无法轻易确认),其中包含openssl-1.0.1c-default-paths.patch对 2012 年 12 月 06 日的更改s_client.c s_server.c s_time.c,这些更改看起来与 2015 年等效(尽管在文本上不相同) /06/12 上游修复。假设这个补丁应用在 RedHat 和 CentOS 软件包中(我无法轻易返回并检查),它们将按预期工作。
| 归档时间: |
|
| 查看次数: |
12020 次 |
| 最近记录: |