X.509-Zertifikate

X. 509-Zertifikate sind digitale Dokumente, die einen Benutzer, einen Computer, einen Dienst oder ein Gerät darstellen. Eine Zertifizierungsstelle, eine untergeordnete Zertifizierungsstelle oder eine Registrierungsstelle stellt X.509-Zertifikate aus. Die Zertifikate enthalten den öffentlichen Schlüssel des Zertifikatantragstellers. Sie enthalten nicht den privaten Schlüssel des Antragstellers, der sicher gespeichert werden muss. RFC 5280 dokumentiert Zertifikate für öffentliche Schlüssel, einschließlich ihrer Felder und Erweiterungen. Zertifikate für öffentliche Schlüssel sind digital signiert und enthalten in der Regel die folgenden Informationen:

  • Informationen zum Zertifikatantragsteller
  • Der öffentliche Schlüssel, der dem privaten Schlüssel des Antragstellers entspricht
  • Informationen über die ausstellende Zertifizierungsstelle
  • Die unterstützten Verschlüsselungs- und/oder digitalen Signaturalgorithmen
  • Informationen zum Bestimmen des Sperr- und Gültigkeitsstatus des Zertifikats

Zertifikatfelder

Es gibt drei inkrementelle Versionen des X.509-Zertifikatstandards, und mit jeder nachfolgenden Version wurden dem Standard Zertifikatfelder hinzugefügt:

  • Version 1 (v1), die 1988 veröffentlicht wurde, folgt dem ursprünglichen X.509-Standard für Zertifikate.
  • Version 2 (v2), die 1993 veröffentlicht wurde, fügt den in Version 1 enthaltenen Feldern zwei Felder hinzu.
  • Version 3 (v3), die 2008 veröffentlicht wurde, bildet die aktuelle Version des X.509-Standards. Diese Version fügt Unterstützung für Zertifikaterweiterungen hinzu.

Dieser Abschnitt soll als allgemeine Referenz für die Zertifikatfelder und Zertifikaterweiterungen dienen, die in X.509-Zertifikaten verfügbar sind. Weitere Informationen zu Zertifikatfeldern und Zertifikaterweiterungen, einschließlich der Datentypen, Einschränkungen und anderen Details, finden Sie in der Spezifikation RFC 5280.

Felder von Version 1

In der folgenden Tabelle werden die Zertifikatfelder der Version 1 für X.509-Zertifikate beschrieben. Alle in dieser Tabelle enthaltenen Felder sind in nachfolgenden X.509-Zertifikatversionen verfügbar.

Name BESCHREIBUNG
Version Eine ganze Zahl, die die Versionsnummer des Zertifikats angibt.
Seriennummer Eine ganze Zahl, die die eindeutige Nummer für jedes von einer Zertifizierungsstelle (ZS) ausgestellte Zertifikat darstellt.
Signature Der Bezeichner für den Kryptografiealgorithmus, der von der Zertifizierungsstelle zum Signieren des Zertifikats verwendet wird. Der Wert enthält den Bezeichner des Algorithmus und alle optionalen Parameter, die ggf. von diesem Algorithmus verwendet werden.
Aussteller Der Distinguished Name (DN) der Zertifizierungsstelle, die das Zertifikat ausgestellt hat.
Gültigkeitsdauer Der Zeitraum (einschließlich), in dem das Zertifikat gültig ist.
Subject Der Distinguished Name (DN) des Zertifikatantragstellers.
Informationen zum öffentlichen Schlüssel des Antragstellers Der öffentliche Schlüssel im Besitz des Zertifikatantragstellers.

Felder von Version 2

In der folgenden Tabelle werden die Felder beschrieben, die für Version 2 hinzugefügt wurden und Informationen zum Zertifikataussteller enthalten. Diese Felder werden jedoch selten verwendet Alle in dieser Tabelle enthaltenen Felder sind in nachfolgenden X.509-Zertifikatversionen verfügbar.

Name BESCHREIBUNG
Eindeutige ID des Ausstellers Ein eindeutiger Bezeichner, der für die ausstellende Zertifizierungsstelle steht, wie von der ausstellenden Zertifizierungsstelle definiert.
Eindeutige ID des Antragstellers Ein eindeutiger Bezeichner, der für den Zertifikatantragsteller steht, wie von der ausstellende Zertifizierungsstelle definiert.

Felder der Version 3

In der folgenden Tabelle wird das Feld beschrieben, das für Version 3 hinzugefügt wurde. Es steht für eine Sammlung von X.509-Zertifikaterweiterungen.

Name BESCHREIBUNG
Erweiterungen Eine Sammlung von standardmäßigen und internetspezifischen Zertifikaterweiterungen. Weitere Informationen zu den verfügbaren Zertifikaterweiterungen für X.509 v3-Zertifikate finden Sie unter Zertifikaterweiterungen.

Zertifikaterweiterungen

Zertifikaterweiterungen, die mit Version 3 eingeführt wurden, bieten Methoden zum Zuordnen weiterer Attribute zu Benutzern oder öffentlichen Schlüsseln und zum Verwalten von Beziehungen zwischen Zertifizierungsstellen. Weitere Informationen zu Zertifikaterweiterungen finden Sie im Abschnitt Zertifikaterweiterungen der Spezifikation RFC 5280.

Standarderweiterungen

Die in diesem Abschnitt enthaltenen Erweiterungen sind im X.509-Standard für die Verwendung in der Public Key-Infrastruktur (PKI) des Internets definiert.

Name BESCHREIBUNG
Zertifizierungsstellenschlüssel-ID Ein Bezeichner, der den Zertifikatantragsteller und die Seriennummer des Zertifizierungsstellenzertifikats, das dieses Zertifikat ausgestellt hat, oder einen Hash des öffentlichen Schlüssels der ausstellenden Zertifizierungsstelle darstellt.
Schlüsselkennung des Antragstellers Ein Hash des öffentlichen Schlüssels des aktuellen Zertifikats.
Schlüsselverwendung Ein Bitmapwert, der die Dienste definiert, für die ein Zertifikat verwendet werden kann.
Private Key Usage Period Der Gültigkeitszeitraum für den privaten Teil eines Schlüsselpaars.
Zertifikatrichtlinien Eine Sammlung von Richtlinieninformationen, die zum Überprüfen des Zertifikatantragstellers verwendet werden.
Policy Mappings Eine Sammlung von Richtlinienzuordnungen, von denen jede eine Richtlinie in einer Organisation einer Richtlinie in einer anderen Organisation zuordnet.
Alternativer Antragstellername Eine Sammlung von alternativen Namen für den Antragsteller.
Issuer Alternative Name Eine Sammlung von alternativen Namen für die ausstellende Zertifizierungsstelle.
Subject Directory Attributes Eine Sammlung von Attributen aus einem X.500- oder LDAP-Verzeichnis.
Basiseinschränkungen. Eine Sammlung von Einschränkungen, mit denen das Zertifikat festlegen kann, ob es für eine Zertifizierungsstelle oder für einen Benutzer, einen Computer, ein Gerät oder einen Dienst ausgestellt wird. Diese Erweiterung umfasst auch eine Einschränkung der Pfadlänge, durch die die Anzahl der untergeordneten Zertifizierungsstellen beschränkt wird, die vorhanden sein können.
Name Constraints Eine Sammlung von Einschränkungen, die festlegen, welche Namespaces in einem von der Zertifizierungsstelle ausgestellten Zertifikat zulässig sind.
Richtlinieneinschränkungen Eine Sammlung von Einschränkungen, die verwendet werden können, um Richtlinienzuordnungen zwischen Zertifizierungsstellen zu unterbinden.
Erweiterte Schlüsselverwendung Eine Sammlung von Werten für den Schlüsselzweck, die angibt, wie der öffentliche Schlüssel eines Zertifikats über die in der Erweiterung Schlüsselverwendung angegebenen Zwecke hinaus verwendet werden kann.
CRL Distribution Points Eine Sammlung von URLs, bei denen die grundlegende Zertifikatsperrliste (Certificate Revocation List, CRL) veröffentlicht wird.
anyPolicy unterbinden Unterbindet die Verwendung der OID Alle Ausstellungsrichtlinien (2.5.29.32.0) in Zertifikaten von untergeordneten Zertifizierungsstellen.
Neueste Zertifikatssperrliste Diese Erweiterung, die auch als Verteilungspunkt der Delta-Zertifikatssperrliste bezeichnet wird, enthält eine oder mehrere URLs, bei denen die Delta-Zertifikatssperrliste der ausstellenden Zertifizierungsstelle veröffentlicht wird.

Private Interneterweiterungen

Die in diesem Abschnitt enthaltenen Erweiterungen ähneln Standarderweiterungen und können verwendet werden, um Anwendungen zu Onlineinformationen über die ausstellende Zertifizierungsstelle oder den Zertifikatantragsteller weiterzuleiten.

Name BESCHREIBUNG
Zugriff auf Zertifizierungsstelleninformationen Eine Sammlung von Einträgen, die das Format und den Speicherort der zusätzlichen Informationen beschreiben, die von der ausstellenden Zertifizierungsstelle bereitgestellt werden.
Zugriff auf Antragstellerinformationen Eine Sammlung von Einträgen, die das Format und den Speicherort der zusätzlichen Informationen beschreiben, die vom Zertifikatantragsteller bereitgestellt werden.

Zertifikatformate

Zertifikate können in verschiedenen Formaten gespeichert werden. Die Azure IoT Hub-Authentifizierung verwendet normalerweise die Formate „Privacy Enhanced Mail“ (PEM) und „Personal Information Exchange“ (PFX). In der folgenden Tabelle werden häufig verwendete Dateien und Formate beschrieben, die zum Darstellen von Zertifikaten verwendet werden.

Format BESCHREIBUNG
Binäres Zertifikat Ein Binärzertifikat mit Rohdaten in Distinguished Encoding Rules (DER) ASN.1-Codierung.
ASCII-PEM-Format Eine PEM-Zertifikatdatei (.pem) enthält ein Base64-codiertes Zertifikat, das mit -----BEGIN CERTIFICATE----- beginnt und mit -----END CERTIFICATE----- endet. Als eines der häufigsten Formate für X.509-Zertifikate wird das PEM-Format von IoT Hub beim Hochladen bestimmter Zertifikate, wie Gerätezertifikate, benötigt.
ASCII PEM-Schlüssel Enthält einen Base64-codierten DER-Schlüssel – optional mit weiteren Metadaten zu dem Algorithmus, der für den Kennwortschutz verwendet wird.
PKCS #7-Zertifikat Ein Format, das für den Transport von signierten oder verschlüsselten Daten konzipiert ist. Es kann die gesamte Zertifikatskette enthalten. RFC 2315 definiert dieses Format.
PKCS #8-Schlüssel Das Format für einen privaten Schlüsselspeicher. RFC 5208 definiert dieses Format.
PKCS #12-Schlüssel und -Zertifikat Ein komplexes Format, das einen Schlüssel und die gesamte Zertifikatskette speichern und schützen kann. Es wird häufig mit der Erweiterung „.p12“ oder „.pfx“ verwendet. PKCS #12 ist ein Synonym für das PFX-Format. RFC 7292 definiert dieses Format.

Selbstsignierte Zertifikate

Sie können zu Testzwecken ein Gerät mit zwei selbstsignierten Gerätezertifikaten bei Ihrer IoT Hub-Instanz authentifizieren. Diese Art der Authentifizierung wird manchmal als Fingerabdruckauthentifizierung bezeichnet, da die Zertifikate durch berechnete Hashwerte identifiziert werden, die als Fingerabdrücke oder Daumenabdrücke bezeichnet werden. Diese berechneten Hashwerte werden von IoT Hub zum Authentifizieren von Geräten verwendet.

Wichtig

Sie sollten auch zu Testzwecken Zertifikate zu verwenden, die von einer ausstellenden Zertifizierungsstelle (Certificate Authority, CA) signiert sind. Verwenden Sie keine selbstsignierten Zertifikate in der Produktion.

Erstellen eines selbstsignierten Zertifikats

Sie können OpenSSL verwenden, um selbstsignierte Zertifikate zu erstellen. Die folgenden Schritte zeigen, wie Sie OpenSSL-Befehle in einer Bash-Shell ausführen, um ein selbstsigniertes Zertifikat zu erstellen und einen Zertifikatfingerabdruck abzurufen, der zum Authentifizieren Ihres Geräts in IoT Hub verwendet werden kann.

Hinweis

Wenn Sie selbstsignierte Zertifikate zum Testen verwenden möchten, müssen Sie für jedes Gerät zwei Zertifikate erstellen.

  1. Führen Sie den folgenden Befehl aus, um einen privaten Schlüssel zu generieren und eine PEM-kodierte private Schlüsseldatei (.key) zu erstellen, wobei Sie die folgenden Platzhalter durch die entsprechenden Werte ersetzen. Der mit dem folgenden Befehl generierte private Schlüssel verwendet den RSA-Algorithmus mit 2048-Bit-Verschlüsselung.

    {KeyFile}. Der Name Ihrer privaten Schlüsseldatei.

    openssl genpkey -out {KeyFile} -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
  2. Führen Sie den folgenden Befehl aus, um eine PKCS #10-Zertifikatsignaturanforderung (CSR) zu generieren und eine CSR-Datei (CSR) zu erstellen, wobei Sie die folgenden Platzhalter durch die entsprechenden Werte ersetzen. Stellen Sie sicher, dass Sie die Geräte-ID des IoT-Geräts für Ihr selbstsigniertes Zertifikat angeben, wenn Sie dazu aufgefordert werden.

    {KeyFile}. Der Name Ihrer privaten Schlüsseldatei.

    {CsrFile}. Der Name Ihrer CSR-Datei.

    {DeviceID}. Der Name Ihres IoT-Geräts.

    openssl req -new -key {KeyFile} -out {CsrFile}
    
    Country Name (2 letter code) [XX]:.
    State or Province Name (full name) []:.
    Locality Name (eg, city) [Default City]:.
    Organization Name (eg, company) [Default Company Ltd]:.
    Organizational Unit Name (eg, section) []:.
    Common Name (eg, your name or your server hostname) []:{DeviceID}
    Email Address []:.
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:.
    An optional company name []:.
    
  3. Führen Sie den folgenden Befehl aus, um Ihre CSR-Datei zu untersuchen und zu überprüfen, wobei Sie die folgenden Platzhalter durch die entsprechenden Werte ersetzen.

    {CsrFile}. Der Name Ihrer Zertifikatsdatei.

    openssl req -text -in {CsrFile} -verify -noout
    
  4. Führen Sie den folgenden Befehl aus, um ein selbstsigniertes Zertifikat zu generieren und eine PEM-codierte Zertifikatdatei (CRT) zu erstellen, wobei Sie die folgenden Platzhalter durch die entsprechenden Werte ersetzen. Der Befehl konvertiert und signiert Ihre CSR-Datei mit Ihrem privaten Schlüssel und generiert ein selbstsigniertes Zertifikat, das in 365 Tagen abläuft.

    {KeyFile}. Der Name Ihrer privaten Schlüsseldatei.

    {CsrFile}. Der Name Ihrer CSR-Datei.

    {CrtFile}. Der Name Ihrer Zertifikatsdatei.

    openssl x509 -req -days 365 -in {CsrFile} -signkey {KeyFile} -out {CrtFile}
    
  5. Führen Sie den folgenden Befehl aus, um den Fingerabdruck des Zertifikats abzurufen, wobei Sie die folgenden Platzhalter durch die entsprechenden Werte ersetzen. Der Fingerabdruck eines Zertifikats ist ein berechneter, für dieses Zertifikat eindeutiger Hashwert. Sie benötigen den Fingerabdruck, um Ihr IoT-Gerät in IoT Hub zu Testzwecken zu konfigurieren.

    {CrtFile}. Der Name Ihrer Zertifikatsdatei.

    openssl x509 -in {CrtFile} -noout -fingerprint
    

Manuelles Überprüfen des Zertifikats nach dem Upload

Wenn Sie Ihr Zertifikat der Stammzertifizierungsstelle (ZS) oder Ihr Zertifikat der untergeordneten Zertifizierungsstelle in Ihren IoT-Hub hochladen, können Sie das Zertifikat automatisch überprüfen lassen. Wenn Sie nicht gewählt haben, dass Ihr Zertifikat während des Uploads automatisch überprüft werden soll, wird das Zertifikat angezeigt, dessen Status auf Nicht überprüft festgelegt wurde. Sie müssen die folgenden Schritte ausführen, um Ihr Zertifikat manuell zu überprüfen.

  1. Wählen Sie das Zertifikat aus, um das Dialogfeld Zertifikat Details anzuzeigen.

  2. Wählen Sie im Dialogfeld Überprüfungs Code generieren aus.

    Screenshot des Dialogfelds „Zertifikatdetails“

  3. Kopieren Sie den Prüfcode in die Zwischenablage. Sie müssen diesen Überprüfungscode in den folgenden Schritten als Zertifikatantragsteller verwenden. Wenn der Überprüfungs Code beispielsweise „75B86466DA34D2B04C0C4C9557A119687ADAE7D4732BDDB3“ ist, fügen Sie diesen als Betreff des Zertifikats hinzu, wie im nächsten Schritt gezeigt.

  4. Es gibt drei Möglichkeiten, ein Überprüfungs Zertifikat zu generieren:

    • Wenn Sie das von Microsoft bereitgestellte PowerShell-Skript verwenden, führen Sie New-CACertsVerificationCert "<verification code>" zum Erstellen des Zertifikats VerifyCert4.cer aus, das <verification code> durch den zuvor generierten Überprüfungscode ersetzt. Weitere Informationen finden Sie unter Verwalten von ZS-Zertifikaten für Beispiele und Tutorials im GitHub-Repository für das Azure IoT Hub Device SDK für C.

    • Wenn Sie das von Microsoft bereitgestellte Bash-Skript verwenden, führen Sie ./certGen.sh create_verification_certificate "<verification code>" zum Erstellen des Zertifikats namens „verification-code.cert.pem“ aus, das <verification code> durch den zuvor generierten Überprüfungscode ersetzt. Weitere Informationen finden Sie unter Verwalten von ZS-Zertifikaten für Beispiele und Tutorials im GitHub-Repository für das Azure IoT Hub Device SDK für C.

    • Wenn Sie Ihre Zertifikate mithilfe von OpenSSL generieren, müssen Sie zuerst einen privaten Schlüssel und dann eine CSR-Datei (Certificate Signing Request, Zertifikatsignieranforderung) generieren. Ersetzen Sie im folgenden Beispiel <verification code> durch den zuvor generierten Überprüfungscode:

    openssl genpkey -out pop.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
    openssl req -new -key pop.key -out pop.csr
    
    -----
    Country Name (2 letter code) [XX]:.
    State or Province Name (full name) []:.
    Locality Name (eg, city) [Default City]:.
    Organization Name (eg, company) [Default Company Ltd]:.
    Organizational Unit Name (eg, section) []:.
    Common Name (eg, your name or your server hostname) []:<verification code>
    Email Address []:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    

    Erstellen Sie dann ein Zertifikat mithilfe der entsprechenden Konfigurationsdatei für die Stammzertifizierungsstelle oder die untergeordnete Zertifizierungsstelle und die CSR-Datei. Im folgenden Beispiel wird veranschaulicht, wie Sie mithilfe von OpenSSL das Zertifikat aus einer Konfigurationsdatei der Stammzertifizierungsstelle und der CSR-Datei erstellen.

    openssl ca -config rootca.conf -in pop.csr -out pop.crt -extensions client_ext
    

    Weitere Informationen finden Sie unter Tutorial: Erstellen und Hochladen von Zertifikaten für Tests.

  5. Wählen Sie in der Ansicht Zertifikat Details das neue Zertifikat aus.

  6. Klicken Sie nach dem Hochladen des Zertifikats auf überprüfen. Der Zertifikatstatus sollte in Überprüft geändert werden.

Weitere Informationen finden Sie unter

Weitere Informationen zu X.509-Zertifikaten und deren Verwendung in IoT Hub finden Sie in den folgenden Artikeln: