27

我有一个保存在本地文件中的证书(例如这个)。openssl从命令行使用,如何显示从该证书到根 CA 的整个链?我试过:

openssl verify -verbose -purpose sslserver -CApath /etc/ssl/certs InCommonServerCA.txt

并得到了这个似乎只显示叶子证书的令人困惑的输出:

InCommonServerCA.txt: C = US, O = Internet2, OU = InCommon, CN = InCommon Server CA
error 26 at 0 depth lookup:unsupported certificate purpose
OK

有任何想法吗?

4

2 回答 2

14

对于本地证书,您可以使用以下命令查看主题和直接颁发者:

openssl x509 -noout -subject -issuer -in test.crt
subject= /C=US/ST=Utah/L=SLC/O=My Organization/CN=my.server.com
issuer= /C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - SHA256 - G2

但这并不表明证书是否包含任何中间证书或完整的信任链。如果您的系统无法验证链,您列出的验证命令将失败(例如:您缺少中间证书或根不受信任),显示如下错误消息:

0 深度查找时出现错误 20:无法获取本地颁发者证书

如果要验证文件中的每个条目,可以使用此脚本显示本地证书的信任链

~ % ssl_chain.sh google.crt
 0: subject= /C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer= /C=US/O=Google Inc/CN=Google Internet Authority G2
 1: subject= /C=US/O=Google Inc/CN=Google Internet Authority G2
issuer= /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
 2: subject= /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
issuer= /C=US/O=Equifax/OU=Equifax Secure Certificate Authority

google.crt: OK
于 2018-01-18T21:52:00.763 回答
6

如果你想验证链和目的,你的 openssl 命令是正确的。“OK”表示链验证。该错误表明用于 sslserver 目的的证书存在问题。看起来您的证书是 CA 证书,而不是叶证书。

您要显示什么样的链信息?您可以查看subjectissuer字段以显示链接。您在上面使用的验证命令证明一个证书签署了另一个证书。

于 2013-09-12T06:51:42.420 回答