X509证书中Subject Key Identifier和sha1Fingerprint的区别

信息安全 tls 证书 公钥基础设施 openssl x.509
2021-09-04 20:50:53

我有一些提取证书数据的软件,软件使用 OpenSSL。subjectKeyIdentifier我很困惑和之间有什么区别sha1Fingerprint两者都是哈希值。我的直觉是,subjectKeyIdentifier是证书公钥的sha1Fingerprint哈希值, 是证书整个字段的哈希值。参考资料subjectKeyIdentifier

这是 SSL 证书的哈希值。

这是我从 SW 得到的一个例子:

"subjectKeyIdentifier": "A8:XX:6A:XX:04:7D:DD:BA:E6:D1:XX:XX:XX:45:65:EF:F3:XX:EC:XX", "sha1Fingerprint": "E6:XX:XX:5B:06:XX:50:9B:XX:82:XX:2D:XX:6E:XX:97:XX:95:XX:CB"

注意:XX在示例中用于编辑。

问题是:这两个哈希有什么区别?每个哈希是做什么用的?

1个回答

主题密钥标识符 (SKID)是 x509 扩展,因此实际上是证书的一部分相反,指纹不是证书的一部分,而是从证书中计算出来的。证书根本不需要 SKID,最多可以有一个 SKID。但是由于指纹只是从证书中计算出来的,因此可以有多个指纹,比如一个使用 SHA-1,一个使用 SHA-256,一个使用 MD5 ...

SKID 用于创建信任链,而不是基于证书主题和颁发者,而是基于证书 SKID 和授权密钥标识符 (AKID)。这使得处理多个 CA 证书使用相同主题字符串的情况变得更加容易。虽然RFC 3280 描述了生成 SKID的常用方法,但唯一真正的要求是 CA 证书的 SKID 必须与该 CA 颁发的所有证书中的 AKID 匹配。

在下面的示例中可以清楚地看到BB:AF:7E:02:3D:FA:...颁发者的 SKID 与颁发的证书的 AKID 匹配:

    ...
    Issuer: C=GB, ST=Greater Manchester, L=Salford, O=COMODO CA Limited, CN=COMODO RSA Certification Authority
    ...
    Subject: C=GB, ST=Greater Manchester, L=Salford, O=COMODO CA Limited, CN=COMODO RSA Domain Validation Secure Server CA
    ...
    X509v3 extensions:
        X509v3 Authority Key Identifier: 
            keyid:BB:AF:7E:02:3D:FA:A6:F1:3C:84:8E:AD:EE:38:98:EC:D9:32:32:D4

    ----

    ...
    Issuer: C=GB, ST=Greater Manchester, L=Salford, O=COMODO CA Limited, CN=COMODO RSA Certification Authority
    ...
    Subject: C=GB, ST=Greater Manchester, L=Salford, O=COMODO CA Limited, CN=COMODO RSA Certification Authority
    ...
    X509v3 extensions:
        X509v3 Subject Key Identifier: 
            BB:AF:7E:02:3D:FA:A6:F1:3C:84:8E:AD:EE:38:98:EC:D9:32:32:D4