我使用Windows、Linux和Mac混合使用,并注意到每个操作系统使用每个操作系统中可用的默认工具显示证书详细信息的方式有很大差异。
Windows显示证书细节的方式非常简洁。特别是证书链。以截图为例。
在这里,它再次出现在Windows中,但是使用certutil
工具。(好的,它正在检查一个pfx,但你明白了)。
然而,在Mac上,这就是它在Keychain Access
中显示相同证书的方式。
正如您所看到的,它没有一个很好的分层视图,这使得识别Windows或certutil
显示的证书链变得容易--至少在我(可能)未经训练的眼睛中是如此。我还没有找到使用openssl
显示证书链的方法,例如,下面的命令openssl x509 -in certificate.crt -text
不显示分层链--只显示颁发者。那么,是否有一种方法可以查看证书的链--无论是文本还是图像--使用openssl
或本地Mac工具?
编辑:我经常用整个证书链(根)创建PFX文件,以便在我工作的公司内分发。作为过程的一部分,我反复检查我从颁发CA下载的证书是否正确,并且在将其传递给openssl
以创建PFX之前,它们的顺序是否正确。因此,为了清楚起见,我想知道如何在我的计算机上本地查看我正在处理的证书的链。
发布于 2020-04-07 15:04:50
使用showcerts
:
openssl s_client -showcerts -connect www.serverfault.com:443
为简洁起见删除了一些信息的输出:
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = *.stackexchange.com
verify return:1
---
Certificate chain
0 s:/CN=*.stackexchange.com
i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
-----BEGIN CERTIFICATE-----
*REMOVED*
-----END CERTIFICATE-----
1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
i:/O=Digital Signature Trust Co./CN=DST Root CA X3
-----BEGIN CERTIFICATE-----
*REMOVED*
-----END CERTIFICATE-----
---
Server certificate
subject=/CN=*.stackexchange.com
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: X25519, 253 bits
发布于 2022-10-25 16:32:25
在证书包中,可以使用不限于CRL的crl2pkcs7
:
openssl crl2pkcs7 -nocrl -certfile server_bundle.pem | openssl pkcs7 -print_certs -noout
从一个实时服务器上,我们需要一个额外的阶段来获得列表:
echo | openssl s_client -connect host:port [-servername host] -showcerts | openssl crl2pkcs7 -nocrl | openssl pkcs7 -noout -print_certs
如果主机服务于多个域以获得正确的证书,请使用-servername
参数。
发布于 2020-04-08 06:54:45
我无法帮助其他Mac工具,包括原生Mac工具。OpenSSL是一个纯命令行产品,没有GUI,当然您可以使用库部分(libcrypto)并编写自己的GUI。
从命令行,如果可能的话,openssl verify
将从您给它的/每个叶证书构建(并验证)一个链,以及从-untrusted
(可以重复的)到中间链(S),以及可能更多的中间链(S)到-trusted
或-CAfile
和/或-CApath
或默认信任库中的根(或锚),这通常是由系统或构建确定的,但可以用envvars覆盖。如果失败了,就会产生一个错误。在1.1.0up中,如果成功并且您还指定了-show_chain
,它将显示每个证书的主题名称--这可能足够识别它们,也可能不够。如果你每门学科只有一个证书,那是相当容易的。如果您拥有来自不同发行人的同一主题的证书,则只需查看下一个证书的名称(最后一个证书除外,除非您也使用-partial_chain
,否则它是自签名的)。如果您有多个证书为同一主题和发行者,这是更困难的。
我经常创建带有整个证书链(根)的PFX文件,以便在我工作的公司内分发。作为过程的一部分,我反复检查我从颁发CA下载的证书是否正确,并且在将其传递给openssl以创建PFX之前,它们的顺序是正确的。
除了“bar the root”部分之外,您还可以反转此工作流。您可以使用openssl pkcs12 -export -chain
作为(或在) -CAfile
和/或-CApath
中提供可能的链证书,而不是手动构建和检查链,然后使用它。这将构建链(实际上也验证它为副作用),并创建一个只包含私钥和叶加有效链(如果成功的话)的PKCS12,但是如果不成功,则提供错误并创建不输出--也就是说,如果您没有有效的链。
https://serverfault.com/questions/1011294
复制相似问题