OpenSSL生成证书链

时间:2017-09-19 07:25:55

标签: ssl https openssl

我发现此服务https://whatsmychaincert.com/通过粘贴证书生成链(带有根)。

有什么办法可以用OpenSSL生成链?

我找到了这个命令:

openssl s_client -connect example.com:443 -showcerts

显示所有证书链,但要求证书已在线。

有没有办法用本地文件证书生成链?

1 个答案:

答案 0 :(得分:2)

s_client -showcerts显示服务器提供的链;这个应该是完整的链,可选择少根,但是因为该网站说某些服务器配置不正确。它还有一个“如何工作”的链接,正如人们所期望的那样解释它是如何工作的:

  

mkcertchain是一个用于构建中间证书链的实用程序   用于SSL证书。它从URL下载链证书   在证书的“CA Issuers”字段中指定,一直重复,直到   遇到所有主流浏览器都信任的根证书。   如果找到多个证书链,则使用最短的证书链。

给定文件中的起始证书,或某些程序可输出(例如可能是数据库查询),以PEM或'DER'(二进制)格式,openssl x509 -text [-inform pem|der]输出所有证书数据,包括' CA发行人。任何数量的文本处理程序,如awk,perl,grep,shell,如bash或PowerShell,都应该能够提取该行及其值,因为它通常是http :,任何数量的HTTP请求程序,如curl并且wget可以获取证书。任何脚本语言(如perl,shell或PowerShell)都可以根据需要迭代此过程,通过比较Subject和Issuer来阻止root命中。如果你想停在一个不是一个复杂的根的锚点,但我认为主流浏览器目前不接受任何这样的锚点,因此不需要为了建立一个被接受的链条通过浏览器。

FWIW,即使您的证书 在AIA中没有CA Issuers字段,大多数公共CA(包括中间人)现在都已被证书透明度日志捕获,这些日志可在{{3处轻松搜索}};你可以通过点击链接轻松浏览链,所以我没有想过尝试自动化它,虽然可能是“驱动”或模拟网络浏览器与网站交互的众多工具可以在这里工作。

当然,首先颁发证书的CA应该始终能够提供所需的链证书;这是他们工作的一部分。