View a markdown version of this page

Self-managed Signieren von Zertifikaten mit AWS IoT Core Zertifikatsanbieter - 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.

Self-managed Signieren von Zertifikaten mit AWS IoT Core Zertifikatsanbieter

Sie können einen AWS IoT Core Zertifikatsanbieter erstellen, um Certificate Signing Requests (CSRs) in der AWS IoT Flottenbereitstellung zu signieren. Ein Zertifikatsanbieter verweist auf eine Lambda-Funktion und die CreateCertificateFromCsr MQTT-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 in der Flottenbereitstellung aufgerufen, um das Zertifikat aus einem 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, das Zertifikat auszustellen.

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

Wichtig

Sie können jeweils nur einen Zertifikatsanbieter erstellen. AWS-Konto Die Änderung des Signierungsverhaltens 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 besser verstehen, wie die selbstverwaltete Zertifikatsignierung bei der Flottenbereitstellung funktioniert. AWS IoT Weitere Informationen finden Sie unter Bereitstellung von Geräten ohne Gerätezertifikate mithilfe von Fleet Provisioning.

AWS IoT Bereitstellung der Flotte

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

Anfrage zur Unterzeichnung eines Zertifikats (CSR)

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

AWS verwaltete das Signieren von Zertifikaten bei der Flottenbereitstellung

AWS Managed ist die Standardeinstellung für das Signieren von Zertifikaten bei der Flottenbereitstellung. Bei AWS verwalteter Zertifikatsignierung signiert AWS IoT Core das Unternehmen CSRs mithilfe seiner eigenen Zertifizierungsstellen.

Self-managed Unterzeichnung von Zertifikaten bei der Bereitstellung von Flotten

Self-managed ist eine weitere Option für das Signieren von Zertifikaten bei der Flottenbereitstellung. Bei 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 CA zu signieren, die von einer AWS privaten CA, einer anderen öffentlich vertrauenswürdigen CA oder Ihrer eigenen Public Key Infrastructure (PKI) generiert wurde.

AWS IoT Core Zertifikatsanbieter

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

Diagramm

Das folgende Diagramm veranschaulicht 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 Client-Zertifikate, mit denen es sich authentifizieren kann. AWS IoT Core

  • Im Rahmen des Flottenbereitstellungsprozesses fordert das Gerät über die MQTT-APIs AWS IoT Core für die Flottenbereitstellung Kundenzertifikate an. Diese Anfrage beinhaltet eine Anfrage zur Zertifikatsignierung (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.

    Bei AWS verwalteter Zertifikatsignierung signiert er den CSR mit seiner eigenen Zertifizierungsstelle und stellt ein Client-Zertifikat aus. AWS IoT Core

  • Mit dem ausgestellten Client-Zertifikat setzt das Gerät die Bereitstellung der Flotte fort und stellt eine sichere Verbindung zu 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 der CSR im Privacy-Enhanced Mail-Format (PEM), der in der Anfrage bereitgestellt wird. CreateCertificateFromCsr Das principalId ist die ID des Prinzipals, mit dem AWS IoT Core bei der Anfrage eine Verbindung hergestellt wurde. CreateCertificateFromCsr clientIdist die für die MQTT-Verbindung festgelegte Client-ID.

{ "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 eine Antwort-Nutzlast von CreateCertificateFromCsr.

Beispiel-Lambda-Funktion

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

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 öffentlichen Schlüssel wie die Certificate Signing Request (CSR) haben.

  • Die Lambda-Funktion muss in 5 Sekunden vollständig ausgeführt werden.

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

  • Dem AWS IoT Dienstprinzipal muss die Aufrufberechtigung für die Lambda-Funktion erteilt werden. Um verwirrende Stellvertreterprobleme zu vermeiden, empfehlen wir, die sourceAccount Aufrufberechtigungen festzulegensourceArn. Weitere Informationen finden Sie unter Cross-service Confused Deputy Prevention.

Das folgende ressourcenbasierte Richtlinienbeispiel für Lambda gewährt die Erlaubnis, AWS IoT 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" } } } ] }

Self-managed Unterzeichnung eines Zertifikats für die Bereitstellung der Flotte

Sie können die selbstverwaltete Zertifikatsignierung für die Flottenbereitstellung mithilfe von oder wählen. AWS CLI AWS-Managementkonsole

Um die selbstverwaltete Zertifikatsignierung zu wählen, müssen Sie einen AWS IoT Core Zertifikatsanbieter einrichten, 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 die CreateCertificateProvider API-Operation oder den create-certificate-provider CLI-Befehl, um einen Zertifikatsanbieter zu erstellen.

Anmerkung

Nachdem Sie einen Zertifikatsanbieter erstellt haben, ändert sich das Verhalten der CreateCertificateFromCsr API für die Flottenbereitstellung, sodass alle Aufrufe von den Zertifikatsanbieter aufrufen, um CreateCertificateFromCsr die Zertifikate zu erstellen. 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

Das Folgende zeigt eine Beispielausgabe für diesen Befehl:

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

Weitere Informationen finden Sie in CreateCertificateProvider der AWS IoT API-Referenz.

Gehen Sie wie folgt vor, um die selbstverwaltete Zertifikatsignierung mithilfe AWS-Managementkonsole der folgenden Schritte auszuwählen:

  1. Rufen Sie die AWS IoT -Konsole auf.

  2. Wählen Sie im linken Navigationsbereich unter Sicherheit die Option Zertifikatsignierung aus.

  3. Wählen Sie auf der Seite zum Signieren von Zertifikaten unter Details zur Zertifikatsignierung die Option Methode zur Zertifikatsignierung bearbeiten aus.

  4. Wählen Sie auf der Seite Signaturmethode für das Zertifikat bearbeiten unter Signaturmethode für das Zertifikat die Option aus Self-managed.

  5. Geben Sie im Abschnitt „Self-managed 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 Zertifikatsignierung aktualisieren.

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 CreateCertificateFromCsr API für die Flottenbereitstellung, sodass alle Aufrufe von den Zertifikatsanbieter aufrufen, um CreateCertificateFromCsr die Zertifikate zu erstellen. 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

Das Folgende zeigt eine Beispielausgabe für diesen Befehl:

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

Weitere Informationen finden Sie in CreateCertificateProvider der AWS IoT API-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

Das Folgende zeigt eine Beispielausgabe für diesen Befehl:

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

Weitere Informationen finden Sie in UpdateCertificateProvider der AWS IoT API-Referenz.

Beschreiben Sie den Zertifikatsanbieter

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

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

Das Folgende zeigt eine Beispielausgabe für diesen Befehl:

{ "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 IoT API-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 einem 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 IoT API-Referenz.

Den 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

Das Folgende zeigt eine Beispielausgabe für diesen Befehl:

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

Weitere Informationen finden Sie in ListCertificateProvider der AWS IoT API-Referenz.