it-swarm.com.de

Was ist der tatsächliche Wert eines Zertifikatsfingerabdrucks?

In einem digitalen x509-Zertifikat gibt es einen Abschnitt "Zertifikatfingerabdruck". Es enthält md5, sha1 und sha256. Wie werden diese erhalten und wie werden diese Werte während der SSL-Verbindung überprüft?

34
Ashwin

Der Fingerabdruck, wie er im Abschnitt Fingerabdrücke angezeigt wird, wenn ein Zertifikat mit Firefox angezeigt wird, oder der Fingerabdruck in IE ist der Hash des gesamten Zertifikats in DER-Form.

Wenn Ihr Zertifikat im PEM-Format vorliegt, konvertieren Sie es mit OpenSSL in DER:

openssl x509 -in cert.crt -outform DER -out cert.cer

Führen Sie dann einen SHA-1-Hash darauf durch (z. B. mit sha1sum1):

sha1sum cert.cer

Dies sollte das gleiche Ergebnis liefern wie das, was Sie im Browser sehen. Diese Werte sind nicht Teil des Zertifikats, sondern werden aus dem Zertifikat berechnet.

Eine Anwendung dieser Fingerabdrücke ist die Validierung von EV-Zertifikaten. In diesem Fall ist der SHA-1-Fingerabdruck des Stamm-EV-CA-Zertifikats im Browser fest codiert (Beachten Sie, dass (a) es der Fingerabdruck des Stammzertifikats ist und (b) übereinstimmen muss genau die Vertrauensanker, die mit der mit diesen Werten kompilierten Version des Browsers geliefert wurden).

Abgesehen davon werden diese Fingerabdrücke hauptsächlich zur Identifizierung der Zertifikate (zur Organisation) verwendet.

Es sind die tatsächlichen öffentlichen Schlüssel, die zur Überprüfung anderer Zertifikate in der Kette verwendet werden. Der zum Signieren des Zertifikats verwendete Digest befindet sich tatsächlich nicht im Zertifikat (nur die resultierende Signatur). Siehe Zertifikatstruktur :

   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,
        ...

In diesem Fall wird der Signaturwert aus dem DER-codierten tbsCertificate (d. H. Seinem Inhalt) berechnet. Wenn der Signaturalgorithmus beispielsweise SHA1 mit RSA ist, wird ein SHA-1-Digest berechnet und dann mit dem privaten RSA-Schlüssel des Ausstellers signiert. Dieser SHA-1-Digest hat nichts mit dem Fingerabdruck zu tun, den openssl x509 -fingerprint oder im Browser, da es sich nur um den Abschnitt tbsCertificate handelt.

Es gibt auch einige nicht verwandte Erweiterungen, die Digests der öffentlichen Schlüssel verwenden können: die Betreffschlüsselkennung und die Berechtigungsschlüsselkennung . Diese sind optional (und innerhalb des TBS-Inhalts des Zertifikats).

39
Bruno