Openssl 如何为s_客户端和s_服务器指定中间证书?

Openssl 如何为s_客户端和s_服务器指定中间证书?,openssl,certificate,Openssl,Certificate,openssl-verify有一个-untrusted选项,用于指定介于 根CA证书,由-CAfile或-CApath选项指定 和要验证的叶证书,它们作为最后一个参数给出 有人知道我们如何为openssl s_客户端和openssl s_服务器命令指定中间证书链吗?不幸的是,手册页上没有提到这一点 如果中间链与客户机或服务器证书一起包含在传递给-cert选项的文件中,则它似乎不起作用,只从该文件读取第一个证书。Meta:这实际上不是编程或开发问题。它可能属于超级用户,也可能属于securit

openssl-verify
有一个
-untrusted
选项,用于指定介于

  • 根CA证书,由
    -CAfile
    -CApath
    选项指定
  • 和要验证的叶证书,它们作为最后一个参数给出
有人知道我们如何为
openssl s_客户端
openssl s_服务器
命令指定中间证书链吗?不幸的是,手册页上没有提到这一点


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

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

对于OpenSSL版本1.1.0(2016-08发布)以上,您可以使用
-cert\u chain
在文件中提供(精确的)中间/链证书,和/或您可以指定
-build\u chain
并使用
-chainCAfile
和/或
-chainCApath
,从中选择所需的证书,与传统使用的
-CAfile
-CApath
类似。然而,1.1.0中没有记录这些,只有1.1.1(2018-09);如果已安装这些手册页,请查看这些手册页,或在web上查看和


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

答案非常清楚,谢谢!听起来你对代码了如指掌。迫不及待地想试试!