【发布时间】:2016-12-18 08:46:06
【问题描述】:
通过使用以下命令,我可以验证所提供证书的 sha1 指纹:
$ openssl s_client -connect hooks.slack.com:443 -showcerts < /dev/null 2>/dev/null | openssl x509 -in /dev/stdin -sha1 -noout -fingerprint
SHA1 Fingerprint=AB:F0:5B:A9:1A:E0:AE:5F:CE:32:2E:7C:66:67:49:EC:DD:6D:6A:38
但是如果我想获得顶级签名机构的指纹呢?
$ openssl s_client -connect hooks.slack.com:443 < /dev/null 2>/dev/null
CONNECTED(00000003)
---
Certificate chain
0 s:/C=US/ST=California/L=San Francisco/O=Slack Technologies, Inc/CN=*.slack.com
i:/C=US/O=GeoTrust Inc./CN=GeoTrust SSL CA - G3
1 s:/C=US/O=GeoTrust Inc./CN=GeoTrust SSL CA - G3
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA <- **I WANT THIS SHA1**
如果我想根据 Java 密钥库对此进行验证,以明确检查它是否包含相同的 CA。
geotrustglobalca, 18-Jul-2003, trustedCertEntry,
Certificate fingerprint (SHA1): DE:28:F4:A4:FF:E5:B9:2F:A3:C5:03:D1:A3:49:A7:F9:96:2A:82:12
因为“geotrustglobalca”和“/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA”没有可比性。
【问题讨论】:
-
CN=*.slack.com可能是错误的。服务器名称不应出现在 Common Name (CN) 中。它已被 IETF 和 CA/B 论坛弃用。如果它们被放置在 CN 中,那么它们也必须出现在 Subject Alternate Name (SAN) 中(在这种情况下,您必须将它们列出两次)。更多规则和原因见How do you sign Certificate Signing Request with your Certification Authority和How to create a self-signed certificate with openssl? -
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?。
标签: ssl openssl x509 fingerprint