web-dev-qa-db-ja.com

X509証明書のサブジェクトキー識別子とsha1Fingerprintの違い

証明書データを抽出するソフトウェアがあり、ソフトウェアはOpenSSLを利用しています。 subjectKeyIdentifiersha1Fingerprintの違いは何ですか?どちらもハッシュ値です。私の直感は、subjectKeyIdentifierが証明書の公開鍵のハッシュであり、sha1Fingerprintが証明書の全体的なフィールドのハッシュであるということです。これは 参照subjectKeyIdentifierについて述べています:

これは、SSL証明書のハッシュ値です。

これは私がソフトウェアから取得するものの例です:

"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は編集に使用されます。

問題は、2つのハッシュの違いは何ですか?各ハッシュの目的は何ですか?

12
user9371654

サブジェクトキー識別子(SKID) はx509拡張であり、実際には証明書の一部です。フィンガープリントは証明書の一部ではなく、証明書から計算されます。証明書はSKIDをまったく必要とせず、最大で1つのSKIDを持つことができます。しかし、フィンガープリントは証明書から計算されるだけなので、SHA-1を使用するフィンガープリント、SHA-256を使用するフィンガープリント、MD5を使用するフィンガープリントなど、複数のフィンガープリントが存在する可能性があります。

SKIDは、証明書のサブジェクトと発行者ではなく、証明書のSKIDと機関キー識別子(AKID)に基づいて信頼チェーンを作成するために使用されます。これにより、同じサブジェクト文字列が複数のCA証明書で使用される状況への対応が容易になります。 RFC 3280はSKIDを生成する一般的な方法を説明しています 唯一の実際の要件は、CA証明書のSKIDが、このCAによって発行されたすべての証明書のAKIDと一致する必要があることです。

以下の例では、発行者のSKID BB:AF:7E:02:3D:FA:...が発行された証明書の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
17
Steffen Ullrich