首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >证书链的验证在叶证书上失败

证书链的验证在叶证书上失败
EN

Stack Overflow用户
提问于 2020-07-30 16:39:51
回答 1查看 2.3K关注 0票数 0

我使用pyopenssl生成了一个PEM证书链(CA、中间和叶),我想确认我正确地定义了所有的东西。

以下是我所采取的步骤:

  1. 我制作了三个PEM证书,对CA进行了自签名,并按照这个问题定义了基本约束这个问题
  2. 我将CA和中间证书复制到/usr/local/share/ca-certificates (作为crt文件)并运行sudo update-ca-cert
  3. 我已经建立了一个基于这个OpenSSL示例的简单服务器
  4. 我尝试使用CA证书运行服务器,并执行了openssl s_client -connect localhost:4433 -CApath /etc/ssl/certs --工作得很好,获得了Verify return code: 0 (ok)
  5. 做了同样的事情,但是这次服务器使用了中间证书-也很好,Verify return code: 0 (ok)
  6. 做同样的事情,但是这次服务器使用了叶证书--这次我得到了Verify return code: 24 (invalid CA certificate)

此外,我还试着验证了这些证书,得到了以下信息:

代码语言:javascript
复制
$ openssl verify 1-ca.pem
1-ca.pem: OK
$ openssl verify 2-intermediate.pem
2-intermediate.pem: OK
$ openssl verify 3-leaf.pem
C = NL, ST = Amsterdam, L = Zaandam, O = FakeDigiCert, OU = FakeFake, CN = www.fakedigicert.nl
error 24 at 1 depth lookup: invalid CA certificate
error 3-leaf.pem: verification failed

为什么一旦服务器的证书离CA超过一步,CA证书就会突然失效?

EN

回答 1

Stack Overflow用户

发布于 2020-07-30 18:26:35

这似乎是一个常见的陷阱,大多数人都会陷入设置https web服务器的状态。您还需要向web服务器提供所有中间证书(通常将叶子和中间pem文件组合成一个pem文件)。因此,当web浏览器访问您的站点时,SSL设置应该从web服务器返回叶子和中间证书。

当您使用-showcerts选项和opensll 客户端命令一起使用时,您可以在提供中间证书的所有网站上看到这一点:

代码语言:javascript
复制
openssl s_client -connect www.example.com:443 -showcerts

openssl 验证命令也是如此。

从医生那里:

-untrusted文件 用于构造从主题证书到信任锚点的证书链的附加不受信任证书(中间颁发者CA)的文件。该文件应包含一个或多个PEM格式的证书。可以多次指定此选项以包括来自多个文件的不受信任证书。

因此,在上面的示例中,您需要这样做:

代码语言:javascript
复制
openssl verify 3-leaf.pem -untrusted 2-intermediate.pem
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63177641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档