在 x509 数字证书中有一个“证书指纹”部分。它包含 md5、sha1 和 sha256。这些是如何获得的,在 SSL 连接期间,如何检查这些值?
证书指纹的实际价值是多少?
信息安全
密码学
tls
证书
证书颁发机构
电子签名
2021-08-15 18:17:38
1个回答
当使用 Firefox 查看证书或 IE 中的指纹时,指纹部分显示在指纹部分中,是DER 形式的整个证书的哈希值。
如果您的证书是 PEM 格式,请使用 OpenSSL 将其转换为 DER:
openssl x509 -in cert.crt -outform DER -out cert.cer
然后,对其执行 SHA-1 哈希(例如,使用sha1sum1
):
sha1sum cert.cer
这应该会产生与您在浏览器中看到的结果相同的结果。这些值不是证书的一部分,而是从证书中计算出来的。
这些指纹的一种应用是验证 EV 证书。在这种情况下,根 EV CA 证书的 SHA-1 指纹在浏览器中被硬编码(请注意,(a)它是根证书的指纹,并且(b)它必须与随使用这些值编译的浏览器版本)。
除此之外,这些指纹主要用于识别证书(用于组织它们)。
它是用于验证链中其他证书的实际公钥。用于签署证书的摘要实际上不在证书中(只有生成的签名)。见证书结构:
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
...
在这种情况下,签名值是根据 DER 编码的 tbsCertificate(即其内容)计算得出的。当签名算法是带有 RSA 的 SHA1(例如)时,会计算一个 SHA-1 摘要,然后使用颁发者的 RSA 私钥进行签名。此 SHA-1 摘要与浏览器显示或显示的指纹无关openssl x509 -fingerprint
,因为它只是 tbsCertificate 部分的指纹。
这次还有一些不相关的扩展可以利用公钥的摘要:主题密钥标识符和授权密钥标识符。这些是可选的(并且在证书的 TBS 内容内)。
其它你可能感兴趣的问题