View a markdown version of this page

Benutzerdefinierte Validierung von Client-Zertifikaten - 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.

Benutzerdefinierte Validierung von Client-Zertifikaten

AWS IoT Core unterstützt die benutzerdefinierte Client-Zertifikatsüberprüfung für X.509 Client-Zertifikate, wodurch die Verwaltung der Client-Authentifizierung verbessert wird. Diese Methode der Zertifikatsvalidierung wird auch als Zertifikatsprüfungen vor der Authentifizierung bezeichnet. Dabei bewerten Sie Client-Zertifikate anhand Ihrer eigenen Kriterien (definiert in einer Lambda-Funktion) und ziehen Client-Zertifikate oder das Zertifikat der Signing Certificate Authority (CA) der Zertifikate zurück, um zu verhindern, dass Clients eine Verbindung herstellen. AWS IoT Core Sie können beispielsweise Ihre eigenen Zertifikatssperrprüfungen erstellen, die den Status der Zertifikate anhand von Validierungsstellen überprüfen, die Endpunkte des Online Certificate Status Protocol (OCSP) oder Certificate Revocation Lists (CRL) unterstützen, und Verbindungen für Clients mit gesperrten Zertifikaten verhindern. Die Kriterien, die zur Bewertung von Client-Zertifikaten verwendet werden, sind in einer Lambda-Funktion (auch bekannt als Lambda vor der Authentifizierung) definiert. Sie müssen die in den Domänenkonfigurationen festgelegten Endpunkte verwenden und der Authentifizierungstyp muss Zertifikat sein. X.509 Darüber hinaus müssen Clients die Erweiterung Server Name Indication (SNI) angeben, wenn sie eine Verbindung herstellen. AWS IoT Core

Anmerkung

Diese Funktion wird in den AWS GovCloud (US) Regionen nicht unterstützt.

Schritt 1: Registrieren Sie Ihre X.509 Client-Zertifikate bei AWS IoT Core

Falls Sie dies noch nicht getan haben, registrieren und aktivieren Sie Ihre X.509 Client-Zertifikate bei AWS IoT Core. Andernfalls überspringen Sie diesen Schritt und gehen Sie direkt zum nächsten.

Gehen Sie wie folgt vor AWS IoT Core, um Ihre Client-Zertifikate bei zu registrieren und zu aktivieren:

  1. Wenn Sie Client-Zertifikate direkt mit erstellen AWS IoT. Diese Client-Zertifikate werden automatisch bei registriert AWS IoT Core.

  2. Wenn Sie Ihre eigenen Client-Zertifikate erstellen, folgen Sie diesen Anweisungen, um sie bei zu registrieren AWS IoT Core.

  3. Folgen Sie diesen Anweisungen, um Ihre Client-Zertifikate zu aktivieren.

Schritt 2: Erstellen einer Lambda-Funktion

Sie müssen eine Lambda-Funktion erstellen, die eine Zertifikatsüberprüfung durchführt und bei jedem Client-Verbindungsversuch für den konfigurierten Endpunkt aufgerufen wird. Folgen Sie beim Erstellen dieser Lambda-Funktion den allgemeinen Anweisungen unter Erstellen Sie Ihre erste Lambda-Funktion. Stellen Sie außerdem sicher, dass die Lambda-Funktion den erwarteten Anforderungs- und Antwortformaten wie folgt entspricht:

Beispiel für ein Ereignis mit einer Lambda-Funktion

{ "connectionMetadata": { "id": "string" }, "principalId": "string", "serverName": "string", "clientCertificateChain": [ "string", "string" ] }
connectionMetadata

Metadaten oder zusätzliche Informationen zur Verbindung des Clients zu AWS IoT Core.

principalId

Die Hauptkennzeichnung, die dem Client in der TLS-Verbindung zugeordnet ist.

serverName

Die Zeichenfolge für den Hostnamen von Server Name Indication (SNI). AWS IoT Core erfordert, dass Geräte die SNI-Erweiterung an das Transport Layer Security (TLS) -Protokoll senden und die vollständige Endpunktadresse im Feld angeben. host_name

clientCertificateChain

Das Zeichenkettenarray, das die X.509 Zertifikatskette des Clients darstellt.

Beispiel für eine Antwort auf eine Lambda-Funktion

{ "isAuthenticated": "boolean" }
isAuthenticated

Ein boolescher Wert, der angibt, ob die Anforderung authentifiziert ist.

Anmerkung

In der Lambda-Antwort isAuthenticated muss angegeben werden, true um mit der weiteren Authentifizierung und Autorisierung fortzufahren. Andernfalls kann das IoT-Client-Zertifikat deaktiviert werden und die benutzerdefinierte Authentifizierung mit X.509 Client-Zertifikaten kann für die weitere Authentifizierung und Autorisierung blockiert werden.

Schritt 3: Autorisieren AWS IoT um Ihre Lambda-Funktion aufzurufen

Nachdem Sie die Lambda-Funktion erstellt haben, müssen Sie mithilfe des CLI-Befehls add-permission die Erlaubnis AWS IoT zum Aufrufen der Lambda-Funktion erteilen. Beachten Sie, dass diese Lambda-Funktion bei jedem Verbindungsversuch zu Ihrem konfigurierten Endpunkt aufgerufen wird. Weitere Informationen finden Sie unter Autorisieren des Aufrufs Ihrer AWS IoT Lambda-Funktion.

Schritt 4: Stellen Sie die Authentifizierungskonfiguration für eine Domain ein

Im folgenden Abschnitt wird beschrieben, wie Sie die Authentifizierungskonfiguration für eine benutzerdefinierte Domäne mithilfe von festlegen AWS CLI.

Legen Sie die Konfiguration des Client-Zertifikats für eine Domäne fest (CLI)

Wenn Sie keine Domänenkonfiguration haben, verwenden Sie den create-domain-configuration CLI-Befehl, um eine zu erstellen. Wenn Sie bereits über eine Domänenkonfiguration verfügen, verwenden Sie den update-domain-configuration CLI-Befehl, um die Konfiguration des Client-Zertifikats für eine Domäne zu aktualisieren. Sie müssen den ARN der Lambda-Funktion hinzufügen, die Sie im vorherigen Schritt erstellt haben.

aws iot create-domain-configuration \ --domain-configuration-name domainConfigurationName \ --authentication-type AWS_X509|CUSTOM_AUTH_X509 \ --application-protocol SECURE_MQTT|HTTPS \ --client-certificate-config 'clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
aws iot update-domain-configuration \ --domain-configuration-name domainConfigurationName \ --authentication-type AWS_X509|CUSTOM_AUTH_X509 \ --application-protocol SECURE_MQTT|HTTPS \ --client-certificate-config '{"clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
domain-configuration-name

Der Name der Domänenkonfiguration.

authentication-type

Der Authentifizierungstyp der Domänenkonfiguration. Weitere Informationen finden Sie unter Auswahl eines Authentifizierungstyps.

application-protocol

Das Anwendungsprotokoll, mit dem Geräte kommunizieren AWS IoT Core. Weitere Informationen finden Sie unter Auswahl eines Anwendungsprotokolls.

client-certificate-config

Ein Objekt, das die Konfiguration der Client-Authentifizierung für eine Domäne angibt.

clientCertificateCallbackArn

Der Amazon-Ressourcenname (ARN) der Lambda-Funktion, die in der AWS IoT TLS-Ebene aufgerufen wird, wenn eine neue Verbindung hergestellt wird. Um die Client-Authentifizierung so anzupassen, dass eine benutzerdefinierte Client-Zertifikatsvalidierung durchgeführt wird, müssen Sie den ARN der Lambda-Funktion hinzufügen, die Sie im vorherigen Schritt erstellt haben.

Weitere Informationen finden Sie unter CreateDomainConfiguration und UpdateDomainConfiguration aus der AWS IoT API-Referenz. Weitere Informationen zu Domänenkonfigurationen finden Sie unter Domänenkonfigurationen.