Selbstverwaltete Zertifikatsignierung mithilfe des Zertifikatsanbieters AWS IoT Core - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Selbstverwaltete Zertifikatsignierung mithilfe des Zertifikatsanbieters AWS IoT Core

Sie können einen AWS IoT Core Zertifikatsanbieter erstellen, um Certificate Signing Requests (CSRs) bei der AWS IoT Flottenbereitstellung zu signieren. Ein Zertifikatsanbieter verweist auf eine Lambda-Funktion und die CreateCertificateFromCsrMQTT-API für die Flottenbereitstellung. Die Lambda-Funktion akzeptiert eine CSR und gibt ein signiertes Client-Zertifikat zurück.

Wenn Sie keinen Zertifikatsanbieter bei sich haben AWS-Konto, wird die CreateCertificateFromCsr MQTT-API bei der Flottenbereitstellung aufgerufen, um das Zertifikat aus einer CSR zu generieren. Nachdem Sie einen Zertifikatsanbieter erstellt haben, ändert sich das Verhalten der CreateCertificateFromCsr MQTT-API und alle Aufrufe dieser MQTT-API rufen den Zertifikatsanbieter auf, um das Zertifikat auszustellen.

Mit dem AWS IoT Core Zertifikatsanbieter können Sie Lösungen implementieren, die private Zertifizierungsstellen (CAs) wie AWS Private CAandere öffentlich vertrauenswürdige Zertifizierungsstellen oder Ihre eigene Public Key Infrastructure (PKI) verwenden, um die CSR zu signieren. Darüber hinaus können Sie den Zertifikatsanbieter verwenden, um die Felder Ihres Client-Zertifikats wie Gültigkeitszeiträume, Signaturalgorithmen, Aussteller und Erweiterungen anzupassen.

Wichtig

Sie können jeweils nur einen Zertifikatsanbieter erstellen. AWS-Konto Die Änderung des Signierverhaltens gilt für die gesamte Flotte, die die CreateCertificateFromCsr MQTT-API aufruft, bis Sie den Zertifikatsanbieter aus Ihrem AWS-Konto löschen.

So funktioniert die selbstverwaltete Zertifikatsignierung bei der Flottenbereitstellung

Die wichtigsten Konzepte

Die folgenden Konzepte enthalten Einzelheiten, anhand derer Sie verstehen können, wie die selbstverwaltete Zertifikatsignierung bei der Flottenbereitstellung funktioniert. AWS IoT Weitere Informationen finden Sie unter Bereitstellen von Geräten ohne Gerätezertifikate mithilfe von Fleet Provisioning.

AWS IoT Flottenbereitstellung

Mit AWS IoT Fleet Provisioning (kurz für Fleet Provisioning) werden Gerätezertifikate AWS IoT Core generiert und sicher an Ihre Geräte gesendet, wenn diese AWS IoT Core zum ersten Mal eine Verbindung herstellen. Sie können Fleet Provisioning verwenden, um Geräte ohne Gerätezertifikate mit zu verbinden. AWS IoT Core

Anfrage zum Signieren eines Zertifikats (CSR)

Bei der Flottenbereitstellung stellt ein Gerät eine Anfrage an die MQTT-APIs AWS IoT Core für die Flottenbereitstellung. Diese Anfrage beinhaltet eine Certificate Signing Request (CSR), die signiert wird, um ein Client-Zertifikat zu erstellen.

AWS verwaltete Zertifikatsignierung bei der Flottenbereitstellung

AWS managed ist die Standardeinstellung für das Signieren von Zertifikaten bei der Flottenbereitstellung. Bei AWS verwalteter Zertifikatsignierung AWS IoT Core werden CSRs mithilfe eigener Zertifizierungsstellen signiert.

Selbstverwaltetes Signieren von Zertifikaten bei der Flottenbereitstellung

Selbstverwaltung ist eine weitere Option für die Zertifikatsignierung bei der Flottenbereitstellung. Mit der selbstverwalteten Zertifikatsignierung erstellen Sie einen AWS IoT Core Zertifikatsanbieter zum Signieren von CSRs. Sie können die selbstverwaltete Zertifikatsignierung verwenden, um CSRs mit einer von AWS Private CA generierten CA, einer anderen öffentlich vertrauenswürdigen CA oder Ihrer eigenen Public Key Infrastructure (PKI) zu signieren.

AWS IoT Core Zertifikatsanbieter

AWS IoT Core Der Zertifikatsanbieter (kurz für Certificate Provider) ist eine vom Kunden verwaltete Ressource, die für die selbstverwaltete Signierung von Zertifikaten bei der Flottenbereitstellung verwendet wird.

Diagramm

Das folgende Diagramm zeigt in vereinfachter Form, wie das Signieren von Selbstzertifikaten bei der AWS IoT Flottenbereitstellung funktioniert.

AWS IoT Core Anbieter von Zertifikaten für die Bereitstellung von Flotten
  • Wenn ein neues IoT-Gerät hergestellt oder in die Flotte eingeführt wird, benötigt es Kundenzertifikate, mit AWS IoT Core denen es sich authentifizieren kann.

  • Im Rahmen des Flottenbereitstellungsprozesses fordert das Gerät über die MQTT-APIs AWS IoT Core für die Flottenbereitstellung Client-Zertifikate an. Diese Anfrage beinhaltet eine Certificate Signing Request (CSR).

  • AWS IoT Core ruft den Zertifikatsanbieter auf und übergibt die CSR als Eingabe an den Anbieter.

  • Der Zertifikatsanbieter verwendet die CSR als Eingabe und stellt ein Client-Zertifikat aus.

    Signiert beim Signieren AWS verwalteter Zertifikate die CSR mit AWS IoT Core einer eigenen Zertifizierungsstelle und stellt ein Client-Zertifikat aus.

  • Mit dem ausgestellten Client-Zertifikat setzt das Gerät die Flottenbereitstellung fort und stellt eine sichere Verbindung mit her. AWS IoT Core

Eingabe der Lambda-Funktion des Zertifikatsanbieters

AWS IoT Core sendet das folgende Objekt an die Lambda-Funktion, wenn sich ein Gerät bei ihr registriert. Der Wert von certificateSigningRequest ist die CSR im PEM-Format (Privacy-Enhanced Mail), die in der Anfrage angegeben ist. CreateCertificateFromCsr Das principalId ist die ID des Prinzipals, mit dem bei der Anfrage eine Verbindung hergestellt wurde. AWS IoT Core CreateCertificateFromCsr clientIdist die Client-ID, die für die MQTT-Verbindung festgelegt wurde.

{ "certificateSigningRequest": "string", "principalId": "string", "clientId": "string" }

Rückgabewert der Lambda-Funktion des Zertifikatsanbieters

Die Lambda-Funktion muss eine Antwort zurückgeben, die den certificatePem Wert enthält. Das Folgende ist ein Beispiel für eine erfolgreiche Antwort. AWS IoT Core verwendet den Rückgabewert (certificatePem), um das Zertifikat zu erstellen.

{ "certificatePem": "string" }

Wenn die Registrierung erfolgreich ist, CreateCertificateFromCsr wird dasselbe certificatePem in der CreateCertificateFromCsr Antwort zurückgegeben. Weitere Informationen finden Sie im Beispiel für die Antwort-Payload von CreateCertificateFromCsr.

Beispiel-Lambda-Funktion

Bevor Sie einen Zertifikatsanbieter erstellen, müssen Sie eine Lambda-Funktion erstellen, um eine CSR zu signieren. Im Folgenden finden Sie ein Beispiel für eine Lambda-Funktion in Python. Diese Funktion ruft AWS Private CA auf, um die Eingabe-CSR unter Verwendung einer privaten Zertifizierungsstelle und des SHA256WITHRSA Signaturalgorithmus zu signieren. Das zurückgegebene Client-Zertifikat ist ein Jahr lang gültig. Weitere Informationen zu AWS Private CA und zum Erstellen einer privaten Zertifizierungsstelle finden Sie unter Was ist eine AWS private Zertifizierungsstelle? und Eine private CA erstellen.

import os import time import uuid import boto3 def lambda_handler(event, context): ca_arn = os.environ['CA_ARN'] csr = (event['certificateSigningRequest']).encode('utf-8') acmpca = boto3.client('acm-pca') cert_arn = acmpca.issue_certificate( CertificateAuthorityArn=ca_arn, Csr=csr, Validity={"Type": "DAYS", "Value": 365}, SigningAlgorithm='SHA256WITHRSA', IdempotencyToken=str(uuid.uuid4()) )['CertificateArn'] # Wait for certificate to be issued time.sleep(1) cert_pem = acmpca.get_certificate( CertificateAuthorityArn=ca_arn, CertificateArn=cert_arn )['Certificate'] return { 'certificatePem': cert_pem }
Wichtig
  • Von der Lambda-Funktion zurückgegebene Zertifikate müssen denselben Betreffnamen und denselben öffentlichen Schlüssel haben wie die Certificate Signing Request (CSR).

  • Die Lambda-Funktion muss in 5 Sekunden fertig ausgeführt werden.

  • Die Lambda-Funktion muss sich in derselben AWS-Konto Region wie die Ressource des Zertifikatsanbieters befinden.

  • Dem AWS IoT Dienstprinzipal muss die Aufrufberechtigung für die Lambda-Funktion erteilt werden. Um verwirrende Probleme mit Stellvertretern zu vermeiden, empfehlen wir Ihnen, die Zugriffsberechtigungen sourceArn und sourceAccount für das Aufrufen festzulegen. Weitere Informationen finden Sie unter Vermeidung des dienstübergreifenden Confused-Deputy-Problems.

Das folgende Beispiel für eine ressourcenbasierte Richtlinie für Lambda gewährt AWS IoT die Erlaubnis, die Lambda-Funktion aufzurufen:

{ "Version": "2012-10-17", "Id": "InvokePermission", "Statement": [ { "Sid": "LambdaAllowIotProvider", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" }, "ArnLike": { "AWS:SourceArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" } } } ] }

Selbstverwaltete Zertifikatsignierung für die Flottenbereitstellung

Sie können die selbstverwaltete Zertifikatssignierung für die Flottenbereitstellung mithilfe von oder auswählen. AWS CLI AWS Management Console

Um sich für die selbstverwaltete Zertifikatsignierung zu entscheiden, müssen Sie einen AWS IoT Core Zertifikatsanbieter erstellen, der CSRs bei der Flottenbereitstellung signiert. AWS IoT Core ruft den Zertifikatsanbieter auf, der eine CSR als Eingabe verwendet und ein Client-Zertifikat zurückgibt. Verwenden Sie den CreateCertificateProvider API-Vorgang oder den create-certificate-provider CLI-Befehl, um einen Zertifikatsanbieter zu erstellen.

Anmerkung

Nachdem Sie einen Zertifikatsanbieter erstellt haben, ändert sich das Verhalten der CreateCertificateFromCsrAPI für die Flottenbereitstellung, sodass bei allen Aufrufen von der Zertifikatsanbieter zur Erstellung der Zertifikate aufgerufen CreateCertificateFromCsr wird. Es kann einige Minuten dauern, bis sich dieses Verhalten ändert, nachdem ein Zertifikatsanbieter erstellt wurde.

aws iot create-certificate-provider \ --certificateProviderName my-certificate-provider \ --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-1 \ --accountDefaultForOperations CreateCertificateFromCsr

Im Folgenden wird eine Beispielausgabe für diesen Befehl gezeigt:

{ "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" }

Weitere Informationen finden Sie in CreateCertificateProvider der AWS IoTAPI-Referenz.

Gehen Sie wie folgt vor AWS Management Console, um die selbstverwaltete Zertifikatsignierung mithilfe von auszuwählen:

  1. Rufen Sie die AWS IoT -Konsole auf.

  2. Wählen Sie in der linken Navigationsleiste unter Sicherheit die Option Zertifikatsignierung aus.

  3. Wählen Sie auf der Seite Zertifikatsignierung unter Details zur Zertifikatsignierung die Option Zertifikatsignierungsmethode bearbeiten aus.

  4. Wählen Sie auf der Seite Zertifikatsignierungsmethode bearbeiten unter Zertifikatsignierungsmethode die Option Selbstverwaltet aus.

  5. Geben Sie im Abschnitt Selbstverwaltete Einstellungen einen Namen für den Zertifikatsanbieter ein und erstellen Sie dann eine Lambda-Funktion oder wählen Sie sie aus.

  6. Wählen Sie Zertifikatsignatur aktualisieren aus.

AWS CLI Befehle für den Zertifikatsanbieter

Zertifikatsanbieter erstellen

Verwenden Sie den CreateCertificateProvider API-Vorgang oder den create-certificate-provider CLI-Befehl, um einen Zertifikatsanbieter zu erstellen.

Anmerkung

Nachdem Sie einen Zertifikatsanbieter erstellt haben, ändert sich das Verhalten der CreateCertificateFromCsrAPI für die Flottenbereitstellung, sodass bei allen Aufrufen von der Zertifikatsanbieter zur Erstellung der Zertifikate aufgerufen CreateCertificateFromCsr wird. Es kann einige Minuten dauern, bis sich dieses Verhalten ändert, nachdem ein Zertifikatsanbieter erstellt wurde.

aws iot create-certificate-provider \ --certificateProviderName my-certificate-provider \ --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-1 \ --accountDefaultForOperations CreateCertificateFromCsr

Im Folgenden wird eine Beispielausgabe für diesen Befehl gezeigt:

{ "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" }

Weitere Informationen finden Sie in CreateCertificateProvider der AWS IoTAPI-Referenz.

Aktualisieren Sie den Zertifikatsanbieter

Verwenden Sie den UpdateCertificateProvider API-Vorgang oder den update-certificate-provider CLI-Befehl, um einen Zertifikatsanbieter zu aktualisieren.

aws iot update-certificate-provider \ --certificateProviderName my-certificate-provider \ --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-2 \ --accountDefaultForOperations CreateCertificateFromCsr

Im Folgenden wird eine Beispielausgabe für diesen Befehl gezeigt:

{ "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" }

Weitere Informationen finden Sie in UpdateCertificateProvider der AWS IoTAPI-Referenz.

Beschreiben Sie den Zertifikatsanbieter

Verwenden Sie die DescribeCertificateProvider API-Operation oder den describe-certificate-provider CLI-Befehl, um einen Zertifikatsanbieter zu beschreiben.

aws iot describe-certificate-provider --certificateProviderName my-certificate-provider

Im Folgenden wird eine Beispielausgabe für diesen Befehl gezeigt:

{ "certificateProviderName": "my-certificate-provider", "lambdaFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "accountDefaultForOperations": [ "CreateCertificateFromCsr" ], "creationDate": "2022-11-03T00:15", "lastModifiedDate": "2022-11-18T00:15" }

Weitere Informationen finden Sie in DescribeCertificateProvider der AWS IoTAPI-Referenz.

Löschen Sie den Zertifikatsanbieter

Verwenden Sie den DeleteCertificateProvider API-Vorgang oder den delete-certificate-provider CLI-Befehl, um einen Zertifikatsanbieter zu löschen. Wenn Sie die Ressource des Zertifikatsanbieters löschen, CreateCertificateFromCsr wird das Verhalten von wieder aufgenommen und AWS IoT es werden Zertifikate erstellt, die AWS IoT von einer CSR signiert wurden.

aws iot delete-certificate-provider --certificateProviderName my-certificate-provider

Dieser Befehl liefert keine Ausgabe.

Weitere Informationen finden Sie in DeleteCertificateProvider der AWS IoTAPI-Referenz.

Zertifikatsanbieter auflisten

Verwenden Sie die ListCertificateProviders API-Operation oder den list-certificate-providers CLI-Befehl AWS-Konto, um die Zertifikatsanbieter in Ihrem aufzulisten.

aws iot list-certificate-providers

Im Folgenden wird eine Beispielausgabe für diesen Befehl gezeigt:

{ "certificateProviders": [ { "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" } ] }

Weitere Informationen finden Sie in ListCertificateProviderder AWS IoTAPI-Referenz.