Geräte-Anmeldedaten verifizieren

Cloud IoT Core bietet Authentifizierung von öffentlichen/privaten Schlüsseln pro Gerät mithilfe von JSON Web Tokens (JWTs). Zur Erhöhung der Sicherheit kann Cloud IoT Core Public-Key-Zertifikate von Geräten mit CA-Zertifikaten auf Registry-Ebene verifizieren.

CA-Zertifikate auf Registry-Ebene sind eine optionale Funktion für zusätzliche Sicherheit; Sie müssen sie jedoch nicht verwenden.

Ein verifiziertes Zertifikat bestätigt, dass ein Paar aus öffentlichem/privatem Schlüssel zu einem legitimen Gerät gehört. Das kann besonders nützlich sein, wenn der Gerätehersteller öffentliche und private Schlüssel erstellt, den privaten Schlüssel auf dem Gerät speichert und der öffentliche Schlüssel von der CA signiert wird.

CA-Zertifikate generieren

Cloud IoT Core kann Zertifikate für öffentliche Schlüssel des Geräts mit selbst signierten CA-Zertifikaten und CA-Zertifikaten eines vertrauenswürdigen Drittanbieters vergleichen. Beide Arten von CA-Zertifikaten werden auf die gleiche Weise verwendet, aber beide werden unterschiedlich generiert.

Selbst signierte CA-Zertifikate CA-Zertifikate von Drittanbietern
Inhaber von privaten Geräteschlüsseln können die Zertifikate generieren Ein vertrauenswürdiger Drittanbieter muss die Zertifikate generieren
Inhaber privater Geräteschlüssel erstellen und besitzen die privaten CA-Schlüssel, mit denen die Zertifikate signiert werden Ein Drittanbieter erstellt und besitzt die privaten CA-Schlüssel, mit denen die Zertifikate signiert werden
Frei generierbar Drittanbieter erstellen Rechnungen, um Zertifikate zu generieren und eine Vertrauenskette mit der CA einzurichten

Selbst signierte CA-Zertifikate

Führen Sie die folgenden Schritte aus, um ein selbst signiertes CA-Zertifikat und den entsprechenden privaten CA-Schlüssel zu generieren:

  1. Erstellen Sie einen privaten CA-Schlüssel. Der private CA-Schlüssel wird eindeutig dem CA-Zertifikat zugeordnet. Mit dem folgenden Befehl können Sie einen privaten RSA-Schlüssel mit 2.048 Bit generieren:
    openssl genpkey -algorithm RSA -out ca_private.pem -pkeyopt rsa_keygen_bits:2048
    
  2. Generieren Sie das selbst signierte CA-Zertifikat. Der folgende Befehl generiert ein RS256-Zertifikat, das die Anforderungen des CA-Zertifikats erfüllt:
    openssl req -x509 -new -nodes -key ca_private.pem -sha256 -out ca_cert.pem -subj "/CN=unused"
    

Weitere Beispiele finden Sie unter RSA-Schlüssel mit einem selbst signierten X.509-Zertifikat generieren oder ES256-Schlüssel mit einem selbst signierten X.509-Zertifikat generieren.

CA-Zertifikate von Drittanbietern

Wenn Sie ein CA-Zertifikat von einem vertrauenswürdigen Drittanbieter erhalten möchten, senden Sie eine CSR an die CA. Die CA sendet Ihnen dann ein CA-Zertifikat mit dem entsprechenden öffentlichen Schlüsselzertifikat auf dem Gerät, das vom privaten CA-Schlüssel signiert ist. So rufen Sie Drittanbieter-CA-Zertifikate ab:

  1. Erstellen Sie einen privaten Geräteschlüssel. Mit dem folgenden Befehl können Sie einen privaten RSA-Schlüssel mit 2.048 Bit generieren:
    openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048
    
  2. Erstellen Sie einen CSR aus dem privaten Schlüssel des Geräts. Der CSR behält das Secret des privaten Schlüssels. Der folgende Befehl generiert einen CSR mit einer SHA-256-Signatur:
    openssl req -new -sha256 -key rsa_private.pem -out rsa_cert.csr -subj "/CN=unused"
    
  3. Senden Sie den CSR an eine CA und beantragen Sie ein Zertifikat. Jede CA hat ein anderes Anwendungsverfahren. Beispielsweise kann es sein, dass Sie ein Konto bei der CA registrieren und den CSR in ein Onlineportal hochladen müssen.

Anforderungen an CA-Zertifikate

Alle CA-Zertifikate auf Registrierungsebene müssen die folgenden Anforderungen erfüllen:

  • Das CA-Zertifikat muss das Format X.509v3 (RFC 5280) haben, mit base64 codiert und in -----BEGIN CERTIFICATE----- und -----END CERTIFICATE----- eingeschlossen sein.
  • Das CA-Zertifikat muss eine .pem-Datei sein, die mit einem unterstützten Algorithmus verschlüsselt ist:
    • RSA mit mindestens 2.048 Bit
    • NIST P-256
  • Das CA-Zertifikat muss gültig sein. Wenn Sie versuchen, ein Gerät in eine Registry aufzunehmen und das Zertifikat der Registry abgelaufen ist, gibt Cloud IoT Core einen Fehler zurück.
    • Optional können Sie die Google Cloud-Befehlszeile verwenden, um die Ablaufzeit eines Zertifikats zu verfolgen.

CA-Zertifikate zu einer Registry hinzufügen

Sobald Sie CA-Zertifikate haben, können Sie sie einer Registry hinzufügen. Cloud IoT Core prüft CA-Zertifikate auf Registrierungsebene, sodass alle CA-Zertifikate mit einer Registry verknüpft sein müssen. Ein Zertifikat kann mehreren Registries hinzugefügt werden. Sie können CA-Zertifikate mit der Google Cloud Console, der API oder gcloud hinzufügen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Registrys auf.

    Zur Seite Registries

  2. Klicken Sie oben auf der Seite auf Registry erstellen.

  3. Klicken Sie auf CA-Zertifikat hinzufügen, um ein Zertifikat einzugeben, einzufügen oder eine .pem-Zertifikatsdatei hochzuladen. Sie können beim Erstellen der Registry nur ein einzelnes Zertifikat hinzufügen, später können Sie jedoch bis zu zehn Zertifikate hinzufügen.

Die Detailseite der Geräte-Registry enthält den Tab Zertifikate, auf dem die vorhandenen Zertifikate angezeigt und weitere Zertifikate hinzugefügt werden können.

gcloud

Wenn Sie CA-Zertifikate hinzufügen oder verwalten möchten, führen Sie einen der gcloud iot registries credentials-Befehle aus.

Führen Sie den Befehl gcloud iot registries credentials create aus, um einer Registry ein neues Zertifikat hinzuzufügen:

gcloud iot registries credentials create \
    --path=PATH_TO_CERTIFICATE \
    --project=PROJECT_ID \
    --registry=REGISTRY_ID \
    --region=REGION

API

Die Ressource DeviceRegistry enthält Felder zum Definieren von CA-Zertifikaten auf Registry-Ebene:

Auswirkungen auf vorhandene Geräte

Wenn Sie Zertifikate hinzufügen oder entfernen, sind vorhandene Geräte in der Registry (unabhängig davon, ob sie verbunden sind oder nicht) nicht betroffen. Wenn die mit einem Gerät verknüpften Zertifikate auf Registry-Ebene widerrufen, gelöscht oder geändert werden, kann das Gerät nicht dieselben Public-Key-Zertifikate verwenden, die bei der Erzwingung der Registry-Zertifikate verwendet wurden. Es kann jedoch weiterhin eine Verbindung zu Cloud IoT Core mit seinem privaten Schlüssel herstellen.

Public-Key-Zertifikate generieren

Cloud IoT Core überprüft Public-Key-Zertifikate eines Geräts, die von privaten CA-Schlüsseln signiert sind.

So generieren Sie ein signiertes Public-Key-Zertifikate:

  • Wenn die Registry mit einem selbst signierten CA-Zertifikat konfiguriert ist, signieren Sie einen öffentlichen Schlüssel mit dem privaten CA-Schlüssel.
    1. Erstellen Sie einen privaten Geräteschlüssel. Dieser Schlüssel unterscheidet sich vom CA-Zertifikat und dem privaten CA-Schlüssel. Mit dem folgenden Befehl können Sie einen privaten RSA-Schlüssel mit 2.048 Bit generieren:
      openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048
      
    2. Erstellen Sie einen CSR aus dem privaten Schlüssel des Geräts. Der folgende Befehl generiert einen CSR mit einer SHA-256-Signatur:
      openssl req -new -sha256 -key rsa_private.pem -out rsa_cert.csr -subj "/CN=unused-device"
      
    3. Erstellen Sie einen öffentlichen Schlüssel und signieren Sie ihn mit dem privaten CA-Schlüssel. Der folgende Befehl generiert ein signiertes RS256-Zertifikat, das die Anforderungen für Public-Key-Zertifikate erfüllt:
      openssl x509 -req -in rsa_cert.csr -CA ca_cert.pem -CAkey ca_private.pem \
          -CAcreateserial -sha256 -out rsa_cert.pem
      
  • Wenn eine Registry mit dem Zertifikat einer Drittanbieter-CA konfiguriert ist, enthält das Zertifikat der Zertifizierungsstelle ein Gerät, das vom privaten CA-Schlüssel signiert wurde. Mit dem folgenden Befehl können Sie ein Public-Key-Zertifikat eines RSA-Geräts aus einem RSA-CA-Zertifikat extrahieren:
    openssl rsa -in ca_cert.pem -pubout -out rsa_cert.pem
    

Anforderungen an Public-Key-Zertifikate

Public-Key-Zertifikate von Geräten müssen (zusätzlich zu den Standardanforderungen für Cloud IoT Core für Geräteanmeldedaten die folgenden Anforderungen erfüllen, um sie mit CA-Zertifikaten auf Registry-Ebene verifizieren zu können:

  • Das CA-Zertifikat muss das Format X.509v3 (RFC 5280) haben, mit base64 codiert und in -----BEGIN CERTIFICATE----- und -----END CERTIFICATE----- eingeschlossen sein.
  • Das Public-Key-Zertifikat des Geräts muss durch ein bestimmtes CA-Zertifikat auf Registry-Ebene signiert werden; Zwischen-CAs werden nicht unterstützt.
    • Das Public-Key-Zertifikat des Geräts darf nicht mit dem Zertifikat auf Registry-Ebene identisch sein.
  • Keine öffentlichen Rohschlüssel.
  • Unterstützte JWT-Algorithmen:
  • Das Zertifikat des öffentlichen Geräteschlüssels muss gültig sein. Wenn Sie versuchen, ein Gerät mit einem abgelaufenen Zertifikat zu erstellen oder zu aktualisieren, gibt Cloud IoT Core einen Fehler zurück.
    • Optional können Sie die Google Cloud-Befehlszeile verwenden, um die Ablaufzeit eines Zertifikats zu verfolgen.

Diese Anforderungen werden beim Erstellen oder Aktualisieren des Geräts erzwungen. Wenn für eine Registry keine CA-Zertifikate definiert sind, werden alle öffentlichen Geräteschlüssel bedingungslos akzeptiert.

Public-Key-Zertifikate prüfen

Cloud IoT Core prüft die Zertifikate von öffentlichen Schlüssel auf CA-Zertifikaten auf Registrierungsebene, wenn Sie ein Gerät erstellen oder dessen öffentliche Schlüssel ändern. Sie können ein Gerät über die Google Cloud Console, die API oder gcloud erstellen. Mit der Google Cloud Console oder API können Sie öffentliche Schlüssel hinzufügen, entfernen und bearbeiten.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Registrys auf.

    Zur Seite Registries

  2. Klicken Sie auf die ID der Registry für das Gerät.

  3. Klicken Sie im Registry-Menü links auf Geräte.

  4. Klicken Sie auf Gerät erstellen.

    Um die öffentlichen Schlüssel eines Geräts zu ändern, klicken Sie auf der Seite Geräte auf die ID des Geräts und dann oben auf der Seite auf Gerät bearbeiten.

  5. Geben Sie eine Geräte-ID ein, die das Gerät kurz beschreibt oder Ihnen bei der Identifizierung hilft. Dieses Feld kann später nicht mehr bearbeitet werden. Informationen zur Benennung und Größe von Geräten finden Sie unter Anforderungen an Zeichen und Größen.

  6. Wählen Sie für Gerätekommunikation die Option Zulassen oder Blockieren aus. Mit dieser Option können Sie die Kommunikation bei Bedarf blockieren, beispielsweise wenn ein Gerät nicht ordnungsgemäß funktioniert. In den meisten Fällen sollten Sie die Kommunikation beim Erstellen des Geräts zulassen.

  7. Wählen Sie unter Format des öffentlichen Schlüssels die Option RS256_X509 oder ES256_X509 aus. Fügen Sie das Public-Key-Zertifikat des Geräts in das Feld Public key value (Öffentlicher Schlüsselwert) ein. Sie können auch ein Ablaufdatum für den Schlüssel festlegen.

    Klicken Sie auf der Seite Gerätedetails auf Öffentlichen Schlüssel hinzufügen, um einem vorhandenen Gerät einen Schlüssel hinzuzufügen.

    So entfernen Sie einen Schlüssel von einem vorhandenen Gerät:

    1. Klicken Sie auf der Seite Gerätedetails auf das Kästchen neben dem Schlüssel.
    2. Klicke auf Löschen, um den Schlüssel zu entfernen.

    Wenn Sie einen Schlüssel bearbeiten möchten, klicken Sie auf der Seite Gerätedetails neben dem Schlüssel auf das Symbol Bearbeiten.

  8. Wählen Sie die Eingabemethode aus, mit der Sie das Public-Key-Zertifikat für den öffentlichen Schlüssel des Geräts eingeben möchten.

    • Manuell: Kopieren Sie das Public-Key-Zertifikate des Geräts und fügen Sie es in das Feld Wert des öffentlichen Schlüssels ein.
    • Hochladen: Klicken Sie im Feld Wert des öffentlichen Schlüssels auf Durchsuchen, um eine Datei auf Ihrem Computer auszuwählen.
  9. Mit den Feldern Schlüssel und Wert können Sie optionale Gerätemetadaten hinzufügen, z. B. eine Seriennummer. Informationen zu den Benennungs- und Größenanforderungen für Metadatenschlüssel finden Sie unter Anforderungen an Zeichen und Größen.

  10. Wählen Sie eine Cloud Logging-Ebene aus, um zu bestimmen, welche Geräteereignisse an Cloud Logging gesendet werden.

  11. Klicken Sie auf Erstellen, um das Gerät zu erstellen.

gcloud

Führen Sie den Befehl gcloud iot devices create aus, um ein Gerät zu erstellen.

Wenn Sie ein Gerät mit RS256-Anmeldedaten erstellen möchten, das die Anforderungen an Gerätezertifikate erfüllt, führen Sie folgenden Befehl aus:

gcloud iot devices create DEVICE_ID \
    --project=PROJECT_ID \
    --region=REGION \
    --registry=REGISTRY_ID \
    --public-key path=rsa_cert.pem,type=rsa-x509-pem

Führen Sie den folgenden Befehl aus, um ein Gerät mit ES256-Anmeldedaten zu erstellen, die die Anforderungen an Gerätezertifikate erfüllen:

gcloud iot devices create DEVICE_ID \
    --project=PROJECT_ID \
    --region=REGION \
    --registry=REGISTRY_ID \
    --public-key path=ec_cert.pem,type=es256-x509-pem

API

Verwenden Sie die folgenden Methoden, um Geräte zu erstellen oder öffentliche Schlüssel zu bearbeiten:

Öffentliche Schlüssel werden im Feld credentials der Ressource Device in der Cloud IoT Core API angegeben. Weitere Informationen finden Sie unter DeviceCredential in der Geräteressource.

Da ein oder mehrere Zertifikate auf Registry-Ebene vorhanden sind, muss die Ressource Device die Anforderungen des Gerätezertifikats erfüllen.

  • Das Feld Device.credentials[i].public_key.key muss auf den Inhalt des Public-Key-Zertifikats des Geräts gesetzt sein (einschließlich Kopf- und Fußzeile).
  • Das Feld Device.credentials[i].public_key.format muss auf RSA_X509_PEM oder ES256_X509_PEM gesetzt sein.