如何为s_client和s_server指定中间证书?

mar*_*ngo 3 openssl certificate

openssl verify可以选择-untrusted指定中间证书链

  • 根 CA 证书,使用-CAfile-CApath选项指定
  • 和要验证的叶证书,作为最后一个参数给出

有谁知道我们如何为openssl s_clientopenssl s_server命令指定中间证书链?不幸的是,手册页没有提及任何相关内容。

看来,如果中间链包含在-cert与客户端或服务器证书一起传递给选项的文件中,则它不起作用,仅从该文件中读取第一个证书。

dav*_*085 5

Meta:这实际上并不是一个编程或开发问题。它可能属于超级用户或 security.SX。

对于 OpenSSL 版本 1.1.0(2016-08 发布)以上,您可以在文件中使用-cert_chain和/或您可以指定-build_chain和使用-chainCAfile和/或-chainCApath从中提供所需的证书(确切的)中间/链证书)的选择,-CAfile-CApath传统使用的方式类似。然而,这些并没有记录在 1.1.0 中,只有 1.1.1 (2018-09);如果您安装了这些手册页,请参阅这些手册页,或者在网络上查看s_clients_server

对于较低版本,您需要一个 kludge: -CAfile-CApath它名义上提供用于验证对等证书的信任库,用于(隐式)完成您自己的(自)链。请注意,信任库中的非根 CA 证书用于构建用于发送和验证(接收)的链,但不作为这些版本中的验证锚点,因此包含它们永远不会改变实际接受为有效的对等证书。(在 1.1.0 和 1.1.1 中,默认情况下它们仍然不是锚点,但如果您指定,则它们是锚点-partial_chain。)