

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.

# Authentifizierung
<a name="authentication"></a>

Die Authentifizierung ist ein Mechanismus, mit dem Sie die Identität eines Clients oder Servers überprüfen können. Bei der Serverauthentifizierung stellen Geräte oder andere Clients sicher, dass sie mit einem tatsächlichen AWS IoT Endpunkt kommunizieren. Die Client-Authentifizierung ist der Prozess, bei dem sich Geräte oder andere Clients selbst authentifizieren. AWS IoT

## Übersicht zum X.509-Zertifikat
<a name="x509-certificate-overview"></a>

X.509-Zertifikate sind digitale Zertifikate, die den [X.509-Standard für Public-Key-Infrastrukturen](https://en.wikipedia.org/wiki/X.509) verwenden, um einen öffentlichen Schlüssel mit einer Identität in einem Zertifikat zu verknüpfen. X.509-Zertifikate werden von einer vertrauenswürdigen Entität ausgegeben, die als Zertifizierungsstelle (Certificate Authority, CA) bezeichnet wird. Die CA nutzen ein oder mehrere spezielle Zertifikate, die als CA-Zertifikate bezeichnet werden, zum Herausgeben der X.509-Zertifikate. Nur die Zertifizierungsstelle kann auf CA-Zertifikate zugreifen. X.509-Zertifikatsketten werden sowohl für die Serverauthentifizierung durch Clients als auch für die Clientauthentifizierung durch den Server verwendet.

# Serverauthentifizierung
<a name="server-authentication"></a>

Wenn Ihr Gerät oder ein anderer Client versucht, eine Verbindung herzustellen AWS IoT Core, sendet der AWS IoT Core Server ein X.509-Zertifikat, das Ihr Gerät zur Authentifizierung des Servers verwendet. Die Authentifizierung erfolgt auf der TLS-Ebene durch die Validierung der [X.509-Zertifikatskette](x509-client-certs.md). Dies ist dieselbe Methode, die Ihr Browser verwendet, wenn Sie eine HTTPS-URL besuchen. Informationen zum Verwenden von Zertifikaten von Ihrer eigenen Zertifizierungsstelle finden Sie unter [Verwalten eigener CA-Zertifikate](manage-your-CA-certs.md).

Wenn Ihre Geräte oder andere Clients eine TLS-Verbindung zu einem AWS IoT Core Endpunkt aufbauen, wird eine Zertifikatskette AWS IoT Core angezeigt, anhand derer die Geräte überprüfen, ob sie mit einem anderen Server kommunizieren AWS IoT Core und nicht, der sich als ein anderer Server ausgibt. AWS IoT Core Welche Kette angezeigt wird, hängt von einer Kombination aus dem Endpunkttyp, zu dem das Gerät eine Verbindung herstellt, und der [Cipher Suite](transport-security.md) ab, die der Client und die während des TLS-Handshakes AWS IoT Core ausgehandelt haben.

## Endpunkttypen
<a name="endpoint-types"></a>

AWS IoT Core unterstützt. `iot:Data-ATS` `iot:Data-ATS`Endgeräte legen ein Serverzertifikat vor, das von einer [Amazon Trust Services-Zertifizierungsstelle](https://www.amazontrust.com/repository/) signiert wurde.

Zertifikate, die von ATS-Endpunkten vorgewiesen werden, sind von Starfield gegensigniert. Einige TLS-Client-Implementierungen erfordern die Überprüfung der Vertrauenswürdigkeit und die Installation der Starfield CA-Zertifikate in den Vertrauensspeichern des Clients.

**Warnung**  
Die Verwendung einer Zertifikat-Pinning-Methode, die das gesamte Zertifikat (einschließlich des Ausstellernamens usw.) hasht, wird nicht empfohlen, da dies zum Scheitern der Zertifikatsprüfung führt, da die von uns bereitgestellten ATS-Zertifikate von Starfield gegensigniert sind und einen anderen Ausstellernamen haben.

**Wichtig**  
Verwenden Sie `iot:Data-ATS` Endpunkte. Zertifikate von Symantec und Verisign sind veraltet und werden von nicht mehr unterstützt. AWS IoT Core

Sie können den Befehl `describe-endpoint` verwenden, um Ihren ATS-Endpunkt zu erstellen.

```
aws iot describe-endpoint --endpoint-type iot:Data-ATS
```

Der Befehl `describe-endpoint` gibt einen Endpunkt im folgenden Format zurück.

```
account-specific-prefix.iot.your-region.amazonaws.com
```

**Anmerkung**  
Beim ersten Aufruf von `describe-endpoint` wird ein Endpunkt erstellt. Alle nachfolgenden Aufrufe von `describe-endpoint` geben den gleichen Endpunkt zurück.

**Anmerkung**  
**Um Ihren `iot:Data-ATS` Endpunkt in der Konsole zu sehen, wählen Sie Einstellungen AWS IoT Core .** Die Konsole zeigt nur den `iot:Data-ATS`-Endpunkt an.

### Erstellen eines `IotDataPlaneClient` mit dem AWS SDK for Java
<a name="java-client"></a>

Um eine zu erstellen`IotDataPlaneClient`, die einen `iot:Data-ATS` Endpunkt verwendet, müssen Sie wie folgt vorgehen. 
+ Erstellen Sie mithilfe der [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html)API einen `iot:Data-ATS` Endpunkt.
+ Geben Sie diesen Endpunkt an, wenn Sie den `IotDataPlaneClient` erstellen.

Im folgenden Beispiel werden beide Operationen ausgeführt.

```
public void setup() throws Exception {
        IotClient client = IotClient.builder().credentialsProvider(CREDENTIALS_PROVIDER_CHAIN).region(Region.US_EAST_1).build();
        String endpoint = client.describeEndpoint(r -> r.endpointType("iot:Data-ATS")).endpointAddress();
        iot = IotDataPlaneClient.builder()
                                .credentialsProvider(CREDENTIALS_PROVIDER_CHAIN)
                                .endpointOverride(URI.create("https://" + endpoint))
                                .region(Region.US_EAST_1)
                                .build();
}
```

## CA-Zertifikate für die Serverauthentifizierung
<a name="server-authentication-certs"></a>

Je nachdem, welchen Typ von Datenendpunkt Sie verwenden und welche Verschlüsselungssuite Sie ausgehandelt haben, werden AWS IoT Core Serverauthentifizierungszertifikate mit einem der folgenden Root-CA-Zertifikate signiert:

**Amazon Trust Services-Endpunkte (bevorzugt)**

**Anmerkung**  
Möglicherweise müssen Sie mit der rechten Maustaste auf diese Links klicken und **Link speichern unter...** auswählen, um diese Zertifikate als Dateien zu speichern.
+ RSA 2048-Bit-Schlüssel: [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem).
+ RSA 4096-Bit-Schlüssel: Amazon Root CA 2. Für die spätere Verwendung reserviert.
+ ECC-256-Bit-Schlüssel: [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem).
+ ECC-384-Bit-Schlüssel: Amazon Root CA 4. Für die spätere Verwendung reserviert.

Diese Zertifikate werden alle durch das [Starfield Root CA-Zertifikat](https://www.amazontrust.com/repository/SFSRootCAG2.pem) signiert. Alle neuen AWS IoT Core Regionen, beginnend mit der Markteinführung von AWS IoT Core in der Region Asien-Pazifik (Mumbai) am 9. Mai 2018, bieten ausschließlich ATS-Zertifikate an.

**VeriSign Endgeräte (veraltet)**
+ RSA 2048-Bit-Schlüssel: [Öffentliches primäres G5-Root-CA-Zertifikat der VeriSign Klasse 3](https://www.digicert.com/kb/digicert-root-certificates.htm)

## Richtlinien für die Serverauthentifizierung
<a name="server-authentication-guidelines"></a>

Es gibt viele Variablen, die die Fähigkeit eines Geräts zur Überprüfung des AWS IoT Core -Server-Authentifizierungszertifikats beeinflussen können. So können beispielsweise Geräte zu speicherbeschränkt sein, um alle möglichen Root-CA-Zertifikate aufzunehmen, oder Geräte können eine nicht standardmäßige Methode der Zertifikatsvalidierung implementieren. Aus diesen Gründen empfehlen wir, diese Richtlinien zu befolgen:
+ Wir empfehlen, dass Sie Ihren ATS-Endpunkt verwenden und alle unterstützten Amazon Root CA-Zertifikate installieren.
+ Wenn Sie nicht alle diese Zertifikate auf Ihrem Gerät speichern können und wenn Ihre Geräte keine ECC-basierte Validierung verwenden, können Sie die ECC-Zertifikate [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem) und [https://www.amazontrust.com/repository/AmazonRootCA4.pem](https://www.amazontrust.com/repository/AmazonRootCA4.pem) weglassen. Wenn Ihre Geräte keine RSA-basierte Zertifikatsvalidierung implementieren, können Sie die RSA-Zertifikate [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem) und [https://www.amazontrust.com/repository/AmazonRootCA2.pem](https://www.amazontrust.com/repository/AmazonRootCA2.pem) weglassen. Möglicherweise müssen Sie mit der rechten Maustaste auf diese Links klicken und **Link speichern unter...** auswählen, um diese Zertifikate als Dateien zu speichern.
+ Wenn bei der Verbindung mit Ihrem ATS-Endpunkt Probleme bei der Validierung von Serverzertifikaten auftreten, versuchen Sie, das entsprechende signierte Amazon Root CA-Zertifikat in Ihrem Vertrauensspeicher hinzuzufügen. Möglicherweise müssen Sie mit der rechten Maustaste auf diese Links klicken und **Link speichern unter...** auswählen, um diese Zertifikate als Dateien zu speichern.
  + [Gegensigniertes Amazon Root CA 1](https://www.amazontrust.com/repository/G2-RootCA1.pem)
  + [Gegensigniertes Amazon Root CA 2](https://www.amazontrust.com/repository/G2-RootCA2.pem): Für die spätere Verwendung reserviert.
  + [Gegensigniertes Amazon Root CA 3](https://www.amazontrust.com/repository/G2-RootCA3.pem)
  + [Gegensigniertes Amazon Root CA 4: Für die spätere Verwendung reserviert.](https://www.amazontrust.com/repository/G2-RootCA4.pem)
+ Wenn bei der Validierung von Serverzertifikaten Probleme auftreten, muss Ihr Gerät möglicherweise explizit der Stammzertifizierungsstelle vertrauen. Versuchen Sie, das [https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) zu Ihrem Trust Store hinzuzufügen.
+ Wenn nach der Ausführung der obigen Schritte immer noch Probleme auftreten, wenden Sie sich bitte an den [AWS -Developer Support](https://aws.amazon.com/premiumsupport/plans/developers/). 

**Anmerkung**  
CA-Zertifikate haben ein Ablaufdatum, nach dem sie nicht mehr zur Validierung eines Serverzertifikats verwendet werden können. Es kann sein, dass CA-Zertifikate vor ihrem Ablaufdatum ersetzt werden müssen. Stellen Sie sicher, dass Sie die CA-Stammzertifikate auf all Ihren Geräten oder Clients aktualisieren können, um eine ununterbrochene Verbindung sicherzustellen und bei bewährten Sicherheitsmethoden stets auf dem aktuellen Stand zu sein.

**Anmerkung**  
Wenn Sie AWS IoT Core in Ihrem Gerätecode eine Verbindung herstellen, übergeben Sie das Zertifikat an die API, die Sie für die Verbindung verwenden. Die von Ihnen verwendete API hängt vom SDK ab. Weitere Informationen finden Sie unter [AWS IoT Core Gerät SDKs](iot-sdks.md).

# Client-Authentifizierung
<a name="client-authentication"></a>

AWS IoT unterstützt drei Arten von Identitätsprinzipalen für die Geräte- oder Client-Authentifizierung:
+ [X.509-Clientzertifikate](x509-client-certs.md)
+ [IAM-Benutzer, -Gruppen und -Rollen](iam-users-groups-roles.md)
+ [Amazon-Cognito-Identitäten](cognito-identities.md)

Diese Identitäten können mit Geräten, mobilen, Web- oder Desktop-Anwendungen verwendet werden. Sie können sogar von Benutzern verwendet werden, die Befehle der AWS IoT Befehlszeilenschnittstelle (CLI) eingeben. In der Regel verwenden AWS IoT Geräte X.509-Zertifikate, während mobile Anwendungen Amazon Cognito Cognito-Identitäten verwenden. Web- und Desktop-Anwendungen verwenden IAM- oder Verbundidentitäten. AWS CLI -Befehle verwenden IAM. Weitere Informationen zu IAM-Identitäten finden Sie unter [Identitäts- und Zugriffsmanagement für AWS IoT](security-iam.md).

# X.509-Clientzertifikate
<a name="x509-client-certs"></a>

X.509-Zertifikate bieten die Möglichkeit, AWS IoT Client- und Geräteverbindungen zu authentifizieren. Client-Zertifikate müssen registriert werden, AWS IoT bevor ein Client mit ihnen kommunizieren kann. AWS IoT Ein Client-Zertifikat kann für mehrere AWS-Konto s in derselben Region registriert werden AWS-Region , um das Verschieben von Geräten zwischen Ihren AWS-Konto s in derselben Region zu erleichtern. Weitere Informationen finden Sie unter [Verwendung von X.509-Clientzertifikaten in mehreren AWS-Konto s mit Registrierung mehrerer Konten](#multiple-account-cert). 

Wir empfehlen, jedem Gerät oder Client ein eindeutiges Zertifikat zuzuordnen, damit feingranulare Client-Verwaltungsaktionen einschließlich Zertifikatswiderruf möglich sind. Geräte und Clients müssen darüber hinaus das Rotieren und Ersetzen von Zertifikaten unterstützen, um eine reibungslose Ausführung sicherzustellen, wenn Zertifikate ablaufen.

Informationen zur Verwendung von X.509-Zertifikaten zur Unterstützung mehrerer Geräte finden Sie unter [Gerätebereitstellung](iot-provision.md). Dort sind die verschiedenen Optionen für die Zertifikatsverwaltung und -bereitstellung aufgeführt, die von AWS IoT unterstützt werden.

**AWS IoT unterstützt die folgenden Typen von X.509-Client-Zertifikaten:**
+  X.509-Zertifikate, generiert von AWS IoT
+  X.509-Zertifikate, signiert von einer Zertifizierungsstelle, die bei registriert ist. AWS IoT
+  Von einer nicht bei AWS IoT registrierten Zertifizierungsstelle signierte X.509-Zertifikate

In diesem Abschnitt wird beschrieben, wie Sie X.509-Zertifikate in AWS IoT verwalten. Sie können die AWS IoT Konsole verwenden oder AWS CLI die folgenden Zertifikatsvorgänge ausführen:
+ [Erstellen Sie AWS IoT Client-Zertifikate](device-certs-create.md)
+ [Erstellen eigener Clientzertifikate](device-certs-your-own.md)
+ [Registrieren eines Clientzertifikats](register-device-cert.md)
+ [Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md)
+ [Widerrufen eines Clientzertifikats](revoke-ca-cert.md)

Weitere Informationen zu den AWS CLI Befehlen, die diese Operationen ausführen, finden Sie unter [AWS IoT CLI-Referenz](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

## Verwenden von X.509-Clientzertifikaten
<a name="x509-client-cert-basics"></a>

X.509-Zertifikate authentifizieren Client- und Geräteverbindungen zu. AWS IoT X.509-Zertifikate bieten mehrere Vorteile gegenüber anderen Identifikations- und Authentifizierungsmechanismen. X.509-Zertifikate ermöglichen die Verwendung asymmetrischer Schlüssel mit Geräten. Beispielsweise könnten Sie private Schlüssel nutzen und sicher auf einem Gerät aufbewahren, sodass vertrauliches kryptografisches Material das Gerät niemals verlässt. X.509-Zertifikate bieten eine stärkere Client-Authentifizierung als andere Systeme, wie z. B. Benutzername und Passwort oder Bearer-Token, da der private Schlüssel das Gerät nie verlässt.

AWS IoT authentifiziert Client-Zertifikate mithilfe des Client-Authentifizierungsmodus des TLS-Protokolls. TLS-Unterstützung ist in vielen Programmiersprachen und Betriebssystemen verfügbar und stellt die gängige Verschlüsselungsmethode für Daten dar. AWS IoT Fordert bei der TLS-Client-Authentifizierung ein X.509-Client-Zertifikat an und validiert den Status des Zertifikats AWS-Konto anhand einer Zertifikatsregistrierung. Anschließend fordert es den Client auf, den Besitz des privaten Schlüssels nachzuweisen, der dem im Zertifikat enthaltenen öffentlichen Schlüssel entspricht. AWS IoT verlangt von den Clients, die [Server Name Indication (SNI) -Erweiterung](https://tools.ietf.org/html/rfc3546#section-3.1) an das Transport Layer Security (TLS) -Protokoll zu senden. Weitere Informationen zum Konfigurieren der SNI-Erweiterung finden Sie unter [Transportsicherheit in AWS IoT Core](transport-security.md).

Um eine sichere und konsistente Client-Verbindung zum AWS IoT Core zu ermöglichen, muss ein X.509-Client-Zertifikat über Folgendes verfügen:
+ In AWS IoT Core registriert. Weitere Informationen finden Sie unter [Registrieren eines Clientzertifikats](register-device-cert.md).
+ Über den Status „`ACTIVE`“ verfügen. Weitere Informationen finden Sie unter [Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md).
+ Das Ablaufdatum des Zertifikats ist noch nicht erreicht.

Sie können Clientzertifikate erstellen, die die Amazon Root CA verwenden, und Sie können Ihre eigenen von einer anderen Zertifizierungsstelle (Certificate Authority, CA) signierten Clientzertifikate verwenden. Weitere Informationen zur Verwendung der AWS IoT Konsole zum Erstellen von Zertifikaten, die die Amazon Root-CA verwenden, finden Sie unter[Erstellen Sie AWS IoT Client-Zertifikate](device-certs-create.md). Weitere Informationen zur Verwendung eigener X.509-Zertifikate finden Sie unter [Erstellen eigener Clientzertifikate](device-certs-your-own.md).

Der Ablaufzeitpunkt für mit einem CA-Zertifikat signierte Zertifikate wird bei der Erstellung des entsprechenden Zertifikats festgelegt. Von generierte X.509-Zertifikate AWS IoT laufen am 31. Dezember 2049 um Mitternacht UTC ab (2049-12-31T 23:59:59 Z).

AWS IoT Device Defender kann Audits an Ihren Geräten durchführen AWS-Konto und dabei die gängigen Best Practices für die IoT-Sicherheit unterstützen. Dazu gehört die Verwaltung der Ablaufdaten von X.509-Zertifikaten, die von Ihrer CA oder der Amazon Root CA signiert wurden. Weitere Informationen zur Verwaltung des Ablaufdatums eines Zertifikats finden Sie unter [Ablaufen von Gerätezertifikaten und Ablaufende](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-approaching-expiration.html) [Zertifizierungsstellenzertifikate](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-ca-cert-approaching-expiration.html).

Im offiziellen AWS IoT Blog finden Sie einen tieferen Einblick in die Verwaltung der Rotation von Gerätezertifikaten und bewährte Sicherheitsmethoden unter [So verwalten Sie die Rotation von IoT-Gerätezertifikaten mithilfe von AWS IoT](https://aws.amazon.com/blogs/iot/how-to-manage-iot-device-certificate-rotation-using-aws-iot/).

## Verwendung von X.509-Clientzertifikaten in mehreren AWS-Konto s mit Registrierung mehrerer Konten
<a name="multiple-account-cert"></a>

Die Registrierung für mehrere Konten ermöglicht das Verschieben von Geräten zwischen Ihren AWS-Konto innerhalb derselben Region oder in unterschiedlichen Regionen. Sie können ein Gerät in einem Testkonto registrieren, testen und konfigurieren und dasselbe Gerät samt Gerätezertifikat anschließend in einem Produktionskonto registrieren und verwenden. Sie können auch das Client-Zertifikat auf dem Gerät oder die Gerätezertifikate ohne registrierte Zertifizierungsstelle registrieren. AWS IoT Weitere Informationen finden Sie unter [Registrieren eines Clientzertifikats, das von einer nicht registrierten CA (CLI) signiert wurde](manual-cert-registration.md#manual-cert-registration-noca-cli).

**Anmerkung**  
Zertifikate, die für die Registrierung mehrerer Konten verwendet werden, werden auf den Endpunkttypen `iot:Data-ATS`, `iot:Data` (Legacy), `iot:Jobs` und `iot:CredentialProvider` unterstützt. Weitere Informationen zu AWS IoT Geräteendpunkten finden Sie unter[AWS IoT Gerätedaten und Dienstendpunkte](iot-connect-devices.md#iot-connect-device-endpoints).

Geräte, die die Registrierung mehrerer Konten verwenden, müssen die [Server Name Indication (SNI) -Erweiterung](https://tools.ietf.org/html/rfc3546#section-3.1) an das Transport Layer Security (TLS) -Protokoll senden und die vollständige Endpunktadresse im `host_name` Feld angeben, wenn sie eine Verbindung herstellen. AWS IoT AWS IoT verwendet die Endpunktadresse`host_name`, um die Verbindung an das richtige AWS IoT Konto weiterzuleiten. Vorhandene Geräte, die keine gültige Endpunktadresse in `host_name` senden, funktionieren weiterhin, können aber die Funktionen nicht nutzen, für die diese Informationen benötigt werden. Weitere Informationen zur SNI-Erweiterung und zum Identifizieren der Endpunktadresse für das Feld `host_name` finden Sie unter [Transportsicherheit in AWS IoT Core](transport-security.md). 

**So verwenden Sie die Registrierung für mehrere Konten**

1. Sie können die Gerätezertifikate ohne Zertifizierungsstelle registrieren. Sie können die signierende Zertifizierungsstelle in mehreren Konten im `SNI_ONLY`-Modus registrieren und diese Zertifizierungsstelle verwenden, um dasselbe Clientzertifikat für mehrere Konten zu registrieren. Weitere Informationen finden Sie unter [Registrieren Sie ein CA-Zertifikat im SNI\$1ONLY-Modus (CLI) – Empfohlen](manage-your-CA-certs.md#register-CA-cert-SNI-cli).

1. Sie können die Gerätezertifikate ohne Zertifizierungsstelle registrieren. Siehe [Registrieren eines von einer nicht registrierten CA signierten Clientzertifikats (CLI)](manual-cert-registration.md#manual-cert-registration-noca-cli). Die Registrierung einer Zertifizierungsstelle ist optional. Sie müssen die Zertifizierungsstelle, mit der die Gerätezertifikate signiert wurden, nicht registrieren AWS IoT.

## Algorithmen zum Signieren von Zertifikaten werden unterstützt von AWS IoT
<a name="x509-cert-algorithms"></a>

AWS IoT unterstützt die folgenden Algorithmen zum Signieren von Zertifikaten:
+ SHA256MIT RSA
+ SHA384MIT RSA
+ SHA512MIT RSA
+ SHA256WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA384WITHRSAANDMGF1 (RSSA-PSS)
+ SHA512WITHRSAANDMGF1 (RSSA-PSS)
+ DSA\$1MIT\$1 SHA256
+ ECDSA-MIT- SHA256
+ ECDSA-MIT- SHA384
+ ECDSA-MIT- SHA512

Weitere Informationen zur Authentifizierung und Sicherheit von Zertifikaten finden Sie unter Qualität der [Gerätezertifikatschlüssel](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-key-quality.html).

**Anmerkung**  
Die Zertifikatssignierungsanforderung (Certificate Signing Request, CSR) muss einen öffentlichen Schlüssel enthalten. Bei dem Schlüssel kann es sich entweder um einen RSA-Schlüssel mit einer Länge von mindestens 2048 Bit oder um einen ECC-Schlüssel aus NIST P-256, NIST P-384 oder NIST P-521-Kurven handeln. Weitere Informationen finden Sie unter [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCertificateFromCsr.html) in der *AWS IoT -API-Referenz*.

## Schlüsselalgorithmen werden unterstützt von AWS IoT
<a name="x509-cert-key-algorithms"></a>

Die folgende Tabelle zeigt, wie Schlüsselalgorithmen unterstützt werden:


****  

| Schlüsselalgorithmus | Algorithmus zum Signieren von Zertifikaten | TLS-Version | Unterstützt? Sie können zwischen Yes und No wählen | 
| --- | --- | --- | --- | 
| RSA mit einer Schlüsselgröße von mindestens 2048 Bit | Alle | TLS 1.2 TLS 1.3 | Ja | 
| ECC IST P-256/P-384/P-521 | Alle | TLS 1.2 TLS 1.3 | Ja | 
| RSA-PSS mit einer Schlüsselgröße von mindestens 2048 Bit | Alle | TLS 1.2 | Nein | 
| RSA-PSS mit einer Schlüsselgröße von mindestens 2048 Bit | Alle | TLS 1.3 | Ja | 

Um ein Zertifikat mithilfe von [CreateCertificateFromCSR](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateFromCsr.html) zu erstellen, können Sie einen unterstützten Schlüsselalgorithmus verwenden, um einen öffentlichen Schlüssel für Ihre CSR zu generieren. Um Ihr eigenes Zertifikat mit [RegisterCertificate](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificate.html)unserer [RegisterCertificateWithoutCA](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificateWithoutCA.html) zu registrieren, können Sie einen unterstützten Schlüsselalgorithmus verwenden, um einen öffentlichen Schlüssel für das Zertifikat zu generieren.

Weitere Informationen finden Sie unter [Sicherheitsrichtlinien](https://docs.aws.amazon.com//iot/latest/developerguide/transport-security.html#tls-policy-table).

# Erstellen Sie AWS IoT Client-Zertifikate
<a name="device-certs-create"></a>

AWS IoT stellt Client-Zertifikate bereit, die von der Amazon Root Certificate Authority (CA) signiert wurden.

In diesem Thema wird beschrieben, wie Sie ein von der Amazon Root-Zertifizierungsstelle signiertes Clientzertifikat erstellen und die Zertifikatsdateien herunterladen. Nachdem Sie die Clientzertifikatdateien erstellt haben, müssen Sie sie auf dem Client installieren.

**Anmerkung**  
Jedes von bereitgestellte X.509-Client-Zertifikat AWS IoT enthält die Attribute des Ausstellers und des Antragstellers, die Sie bei der Erstellung des Zertifikats festgelegt haben. Die Zertifikatsattribute können erst ab der Erstellung des Zertifikats nicht mehr modifiziert werden.

Sie können die AWS IoT Konsole oder die verwenden AWS CLI , um ein von der Amazon Root-Zertifizierungsstelle signiertes AWS IoT Zertifikat zu erstellen.

## Erstellen Sie ein AWS IoT Zertifikat (Konsole)
<a name="device-certs-create-console"></a>

**Um ein AWS IoT Zertifikat mit der AWS IoT Konsole zu erstellen**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im Navigationsbereich **Sichern**, **Zertifikate** und anschließend **Erstellen**.

1. Wählen Sie **Zertifikat mit einem Klick erstellen (empfohlen)** und dann **Zertifikat erstellen**.

1. Laden Sie die Clientzertifikatdateien für das Objekt, den öffentlichen Schlüssel und den privaten Schlüssel auf der Seite **Zertifikat erstellt\$1** an einen sicheren Speicherort herunter. Diese von generierten Zertifikate AWS IoT sind nur für die Verwendung mit AWS IoT Diensten verfügbar.

   Wenn Sie auch die Amazon-Root-CA-Zertifikatdatei benötigen, finden Sie auf dieser Seite auch den Link zu der Seite, auf der Sie sie herunterladen können.

1. Es wurde nun ein Clientzertifikat erstellt und bei AWS IoT registriert. Sie müssen das Zertifikat aktivieren, bevor Sie es in einem Client verwenden.

    Wählen Sie **Aktivieren**, um das Clientzertifikat jetzt zu aktivieren. Wenn Sie das Zertifikat jetzt nicht aktivieren möchten, können Sie unter [Aktivieren eines Clientzertifikats (Konsole)](activate-or-deactivate-device-cert.md#activate-device-cert-console) erfahren, wie Sie das Zertifikat zu einem späteren Zeitpunkt aktivieren können.

   

1. Wenn Sie eine Richtlinie an das Zertifikat anfügen möchten, wählen Sie **Anfügen einer Richtlinie**.

   Wenn Sie jetzt keine Richtlinie anfügen möchten, wählen Sie **Fertig** , um den Vorgang abzuschließen. Sie können zu einem späteren Zeitpunkt eine Richtlinie anfügen.

Wenn Sie den Vorgang abgeschlossen haben, installieren Sie die Zertifikatdateien auf dem Client.

## AWS IoT Zertifikat erstellen (CLI)
<a name="device-certs-create-cli"></a>

Das AWS CLI bietet den **[create-keys-and-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/create-keys-and-certificate.html)** Befehl zum Erstellen von Client-Zertifikaten, die von der Amazon Root-Zertifizierungsstelle signiert wurden. Mit diesem Befehl wird die Amazon Root-CA-Zertifikatdatei jedoch nicht heruntergeladen. Sie können die Amazon Root-CA-Zertifikatdatei von [CA-Zertifikate für die Serverauthentifizierung](server-authentication.md#server-authentication-certs) herunterladen. 

Dieser Befehl erstellt private Schlüssel-, öffentliche Schlüssel- und X.509-Zertifikatsdateien und registriert und aktiviert das Zertifikat mit AWS IoT.

```
aws iot create-keys-and-certificate \
    --set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```

Wenn Sie das Zertifikat beim Erstellen und Registrieren nicht aktivieren möchten, erstellt dieser Befehl einen privaten und einen öffentlichen Schlüssel sowie X.509-Zertifikatdateien und registriert das Zertifikat, aktiviert es jedoch nicht. Unter [Aktivieren eines Clientzertifikats (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) wird beschrieben, wie Sie das Zertifikat zu einem späteren Zeitpunkt aktivieren können.

```
aws iot create-keys-and-certificate \
    --no-set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```



Installieren Sie die Zertifikatdateien auf dem Client.

# Erstellen eigener Clientzertifikate
<a name="device-certs-your-own"></a>

AWS IoT unterstützt Client-Zertifikate, die von beliebigen Stamm- oder Zwischenzertifizierungsstellen (CA) signiert wurden. AWS IoT verwendet CA-Zertifikate, um den Besitz von Zertifikaten zu überprüfen. Um Gerätezertifikate verwenden zu können, die von einer Zertifizierungsstelle signiert wurden, die nicht die Zertifizierungsstelle von Amazon ist, muss das Zertifikat der Zertifizierungsstelle registriert sein, AWS IoT damit wir den Besitz des Gerätezertifikats überprüfen können.

AWS IoT unterstützt mehrere Möglichkeiten, eigene Zertifikate mitzubringen (BYOC): 
+ Registrieren Sie zunächst die Zertifizierungsstelle, die zum Signieren der Clientzertifikate verwendet wird, und registrieren Sie dann einzelne Clientzertifikate. Wenn Sie das Gerät oder den Client bei der ersten Verbindung mit seinem Client-Zertifikat registrieren möchten AWS IoT (auch bekannt als [Just-in-Time-Provisioning](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html)), müssen Sie die signierende Zertifizierungsstelle bei AWS IoT registrieren und die automatische Registrierung aktivieren.
+ Wenn Sie die signierende Zertifizierungsstelle nicht registrieren können, können Sie Clientzertifikate auch ohne CA registrieren. Bei Geräten, die ohne CA registriert sind, müssen Sie [Server Name Indication (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) angeben, wenn Sie eine Verbindung zu AWS IoT herstellen.

**Anmerkung**  
Um Client-Zertifikate mithilfe einer Zertifizierungsstelle zu registrieren, müssen Sie die signierende Zertifizierungsstelle bei AWS IoT keiner anderen Zertifizierungsstelle in der Hierarchie registrieren. CAs 

**Anmerkung**  
Ein CA-Zertifikat kann nur im `DEFAULT`-Modus von einem Konto in einer Region registriert werden. Ein CA-Zertifikat kann nur im `SNI_ONLY`-Modus von mehreren Konten in einer Region registriert werden. 

Weitere Informationen zur Verwendung von X.509-Zertifikaten zur Unterstützung mehrerer Geräte finden Sie unter [Gerätebereitstellung](iot-provision.md). Dort sind die verschiedenen Optionen für die Zertifikatsverwaltung und -bereitstellung aufgeführt, die von AWS IoT unterstützt werden.

**Topics**
+ [

# Verwalten eigener CA-Zertifikate
](manage-your-CA-certs.md)
+ [

# Erstellen eines Clientzertifikats mit Ihrem CA-Zertifikat
](create-device-cert.md)

# Verwalten eigener CA-Zertifikate
<a name="manage-your-CA-certs"></a>

In diesem Abschnitt werden allgemeine Aufgaben für die Verwaltung eigener Zertifizierungsstellenzertifikate (Certificate Authority, CA) beschrieben.

Sie können Ihre Zertifizierungsstelle (CA) bei registrieren, AWS IoT wenn Sie Client-Zertifikate verwenden, die von einer Zertifizierungsstelle signiert wurden, die diese AWS IoT nicht erkennt.

Wenn Sie möchten, dass Clients ihre Client-Zertifikate AWS IoT bei der ersten Verbindung automatisch registrieren, muss die Zertifizierungsstelle, die die Client-Zertifikate signiert hat, bei der registriert sein AWS IoT. Andernfalls müssen Sie das CA-Zertifikat, das die Clientzertifikate signiert hat, nicht registrieren.

**Anmerkung**  
Ein CA-Zertifikat kann nur im `DEFAULT`-Modus von einem Konto in einer Region registriert werden. Ein CA-Zertifikat kann nur im `SNI_ONLY`-Modus von mehreren Konten in einer Region registriert werden.

**Topics**
+ [

## So erstellen Sie ein CA-Zertifikat
](#create-your-CA-cert)
+ [

## Registrieren eines CA-Zertifikats
](#register-CA-cert)
+ [

## Deaktivieren eines CA-Zertifikats
](#deactivate-ca-cert)

## So erstellen Sie ein CA-Zertifikat
<a name="create-your-CA-cert"></a>

Wenn Sie kein CA-Zertifikat besitzen, können Sie [OpenSSL-v1.1.1i](https://www.openssl.org/)-Tools verwenden, um ein Zertifikat zu erstellen.

**Anmerkung**  
Sie können dieses Verfahren nicht in der AWS IoT Konsole ausführen.

**So erstellen Sie ein CA-Zertifikat mit [OpenSSL-v1.1.1i](https://www.openssl.org/)-Tools.**

1. Erzeugen Sie ein Schlüsselpaar.

   ```
   openssl genrsa -out root_CA_key_filename.key 2048
   ```

1. Verwenden Sie den privaten Schlüssel des Schlüsselpaars zur Erzeugung eines CA-Zertifikats.

   ```
   openssl req -x509 -new -nodes \
       -key root_CA_key_filename.key \
       -sha256 -days 1024 \
       -out root_CA_cert_filename.pem
   ```

## Registrieren eines CA-Zertifikats
<a name="register-CA-cert"></a>

Diese Verfahren beschreiben, wie Sie ein Zertifikat von einer Zertifizierungsstelle (CA) registrieren, die nicht die Zertifizierungsstelle von Amazon ist. AWS IoT Core verwendet CA-Zertifikate, um den Besitz von Zertifikaten zu überprüfen. Um Gerätezertifikate zu verwenden, die von einer Zertifizierungsstelle signiert wurden, bei der es sich nicht um die Zertifizierungsstelle von Amazon handelt, müssen Sie das CA-Zertifikat registrieren, AWS IoT Core damit die Inhaberschaft des Gerätezertifikats verifiziert werden kann.

### Registrieren eines CA-Zertifikats (Konsole)
<a name="register-CA-cert-console"></a>

**Anmerkung**  
Starten Sie die Konsole unter [CA-Zertifikat registrieren](https://console.aws.amazon.com//iot/home#/create/cacertificate), um ein CA-Zertifikat in der Konsole zu registrieren. Sie können Ihre CA im Modus für mehrere Konten registrieren, ohne dass Sie ein Verifizierungszertifikat bereitstellen müssen oder Zugriff auf den privaten Schlüssel benötigen. Eine CA kann im Modus für mehrere Konten von mehreren AWS-Konten gleichzeitig in derselben AWS-Region registriert werden. Sie können Ihre CA im Einzelkonto-Modus registrieren, indem Sie ein Verifizierungszertifikat und einen Eigentumsnachweis für den privaten Schlüssel der CA vorlegen.

### Registrieren eines CA-Zertifikats (CLI)
<a name="register-CA-cert-cli"></a>

Sie können ein CA-Zertifikat im `DEFAULT`-Modus oder im `SNI_ONLY`-Modus registrieren. Eine CA kann im `DEFAULT` Modus eins zu eins AWS-Konto registriert werden AWS-Region. Eine CA kann im `SNI_ONLY` Modus von mehreren AWS-Konten gleichzeitig registriert werden AWS-Region. Weitere Informationen zu CA-Zertifikaten finden Sie unter [certificateMode](https://docs.aws.amazon.com//iot/latest/apireference/API_CACertificateDescription.html#iot-Type-CACertificateDescription-certificateMode).

**Anmerkung**  
Es wird empfohlen, dass Sie eine CA im `SNI_ONLY`-Modus registrieren. Sie müssen weder ein Bestätigungszertifikat noch Zugriff auf den privaten Schlüssel vorlegen, und Sie können die Zertifizierungsstelle von mehreren AWS-Konten gleichzeitig registrieren AWS-Region.

#### Registrieren Sie ein CA-Zertifikat im SNI\$1ONLY-Modus (CLI) – Empfohlen
<a name="register-CA-cert-SNI-cli"></a>

**Voraussetzungen**

Stellen Sie sicher, dass Sie auf Ihrem Computer über Folgendes verfügen, bevor Sie fortfahren:
+ Die Zertifikatsdatei der Root-CA (im folgenden Beispiel referenziert als `root_CA_cert_filename.pem`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) oder höher

**Um ein CA-Zertifikat im `SNI_ONLY` Modus zu registrieren, verwenden Sie AWS CLI**

1. Registrieren Sie das CA-Zertifikat mit AWS IoT. Geben Sie mit dem Befehl **register-ca-certificate** den Namen der CA-Zertifikatsdatei ein. Weitere Informationen finden Sie unter [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) in der Referenz zum *AWS CLI -Befehl*.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --certificate-mode SNI_ONLY
   ```

   Bei Erfolg gibt dieser Befehl den zurück*certificateId*.

1. Zu diesem Zeitpunkt wurde das CA-Zertifikat registriert, ist AWS IoT aber inaktiv. Das CA-Zertifikat muss aktiv sein, damit Sie Clientzertifikate registrieren können, die von diesem Zertifikat signiert sind.

   In diesem Schritt wird das CA-Zertifikat aktiviert.

   Verwenden Sie Befehl **update-certificate** wie folgt, um das CA-Zertifikat zu aktivieren. Weitere Informationen finden Sie unter [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) in der *AWS CLI -Befehlsreferenz*.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Verwenden Sie den Befehl **describe-ca-certificate**, um den Status des CA-Zertifikats anzuzeigen. Weitere Informationen finden Sie unter [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) in der Referenz zum *AWS CLI -Befehl*.

#### Registrieren eines CA-Zertifikats im `DEFAULT`-Modus (CLI)
<a name="register-CA-cert-default-cli"></a>

**Voraussetzungen**

Stellen Sie sicher, dass Sie auf Ihrem Computer über Folgendes verfügen, bevor Sie fortfahren:
+ Die Zertifikatsdatei der Root-CA (im folgenden Beispiel referenziert als `root_CA_cert_filename.pem`)
+ Die private Schlüsseldatei des Root-CA-Zertifikats (im folgenden Beispiel referenziert als `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) oder höher

**Um ein CA-Zertifikat im `DEFAULT` Modus zu registrieren, verwenden Sie den AWS CLI**

1. Um einen Registrierungscode von zu erhalten AWS IoT, verwenden Sie**get-registration-code**. Speichern Sie den zurückgegebenen `registrationCode`, um ihn als `Common Name` des Verifizierungszertifikats für private Schlüssel zu verwenden. Weitere Informationen finden Sie unter [get-registration-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-registration-code.html) in der Referenz zum *AWS CLI -Befehl*.

   ```
   aws iot get-registration-code
   ```

1. Generieren Sie ein Schlüsselpaar für das Verifizierungszertifikat für private Schlüssel:

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Erstellen Sie eine Zertifikatssignierungsanforderung (Certificate Signing Request, CSR) für das Verifizierungszertifikat für private Schlüssel. Geben Sie im Feld `Common Name` des Zertifikats den von **get-registration-code** zurückgegebenen Wert für `registrationCode` ein.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   Sie werden aufgefordert, einige Informationen zum Zertifikat einzugeben, z. B. den `Common Name`.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Verwenden Sie die CSR, um ein Verifizierungszertifikat für private Schlüssel zu erstellen:

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Registrieren Sie das CA-Zertifikat mit AWS IoT. Geben Sie den Dateinamen des CA-Zertifikats und den Dateinamen des Verifizierungszertifikat für private Schlüssel wie folgt an den Befehl **register-ca-certificate** weiter. Weitere Informationen finden Sie unter [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) in der Referenz zum *AWS CLI -Befehl*.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --verification-cert file://verification_cert_filename.pem
   ```

   Dieser Befehl gibt bei Erfolg den *certificateId* zurück.

1. Zu diesem Zeitpunkt wurde das CA-Zertifikat registriert, ist AWS IoT aber nicht aktiv. Das CA-Zertifikat muss aktiv sein, damit Sie Clientzertifikate registrieren können, die von diesem Zertifikat signiert sind.

   In diesem Schritt wird das CA-Zertifikat aktiviert.

   Verwenden Sie Befehl **update-certificate** wie folgt, um das CA-Zertifikat zu aktivieren. Weitere Informationen finden Sie unter [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) in der *AWS CLI -Befehlsreferenz*.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Verwenden Sie den Befehl **describe-ca-certificate**, um den Status des CA-Zertifikats anzuzeigen. Weitere Informationen finden Sie unter [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) in der Referenz zum *AWS CLI -Befehl*.

### Erstellen Sie ein CA-Verifizierungszertifikat, um das CA-Zertifikat in der Konsole zu registrieren.
<a name="create-CA-verification-cert"></a>

**Anmerkung**  
Dieses Verfahren wird nur verwendet, wenn Sie ein CA-Zertifikat von der AWS IoT Konsole aus registrieren.  
Wenn Sie dieses Verfahren nicht von der AWS IoT Konsole aus aufgerufen haben, starten Sie den Registrierungsprozess für das CA-Zertifikat in der Konsole unter [CA-Zertifikat registrieren](https://console.aws.amazon.com//iot/home#/create/cacertificate). 

Stellen Sie sicher, dass Sie auf demselben Computer über Folgendes verfügen, bevor Sie fortfahren:
+ Die Zertifikatsdatei der Root-CA (im folgenden Beispiel referenziert als `root_CA_cert_filename.pem`)
+ Die private Schlüsseldatei des Root-CA-Zertifikats (im folgenden Beispiel referenziert als `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) oder höher

**Erstellen Sie ein CA-Verifizierungszertifikat, um Ihr CA-Zertifikat in der Konsole zu registrieren und die Befehlszeilenschnittstelle zu verwenden.**

1. Ersetzen Sie `verification_cert_key_filename.key` durch den Namen der Schlüsseldatei für das Verifizierungszertifikat, die Sie erstellen möchten (z. B. **verification\$1cert.key**). Führen Sie anschließend diesen Befehl aus, um ein Schlüsselpaar für das Verifizierungszertifikat für private Schlüssel zu generieren:

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Ersetzen Sie `verification_cert_key_filename.key` durch den Namen der Schlüsseldatei, die Sie in Schritt 1 erstellt haben.

   Ersetzen Sie `verification_cert_csr_filename.csr` durch den Namen der Zertifikatsignierungsanforderungsdatei (Certificate Signing Request, CSR), die Sie erstellen möchten. Beispiel, **verification\$1cert.csr**.

   Führen Sie den Befehl aus, um die CSR-Datei zu erstellen.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   Der Befehl fordert Sie zur Eingabe zusätzlicher Informationen auf, die an späterer Stelle erläutert werden.

1. Kopieren Sie in der AWS IoT Konsole im Container für das **Bestätigungszertifikat** den Registrierungscode.

1. Im folgenden Beispiel wird gezeigt, welche Informationen der Befehl **openssl** fordert. Mit Ausnahme des Felds `Common Name` können Sie Ihre eigenen Werte eingeben oder sie leer lassen.

   Fügen Sie in das Feld `Common Name` den Registrierungscode ein, den Sie im vorherigen Schritt kopiert haben.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

   Danach erstellt der Befehl die CSR-Datei.

1. Ersetzen Sie die `verification_cert_csr_filename.csr` durch die `verification_cert_csr_filename.csr`, die Sie im vorherigen Schritt verwendet haben.

   Ersetzen Sie `root_CA_cert_filename.pem` durch den Namen der CA-Zertifikatsdatei, die Sie registrieren möchten.

   Ersetzen Sie `root_CA_key_filename.key` durch den Namen der privaten Schlüsseldatei des CA-Zertifikats.

   Ersetzen Sie `verification_cert_filename.pem` durch den Namen der Verifizierungszertifikatdatei, die Sie erstellen möchten. Beispiel, **verification\$1cert.pem**.

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Nachdem der OpenSSL-Befehl abgeschlossen ist, sollten Sie diese Dateien bereit haben, wenn Sie zur Konsole zurückkehren.
   + Ihre CA-Zertifikatsdatei (wurde im vorherigen Befehl `root_CA_cert_filename.pem` verwendet)
   + Das Bestätigungszertifikat, das Sie im vorherigen Schritt erstellt haben (das im vorherigen Befehl *verification\$1cert\$1filename.pem* verwendet wurde)

## Deaktivieren eines CA-Zertifikats
<a name="deactivate-ca-cert"></a>

Wenn ein Zertifizierungsstellenzertifikat (CA) für die automatische Registrierung von Client-Zertifikaten aktiviert ist, wird das CA-Zertifikat AWS IoT überprüft, um sicherzustellen, dass es sich um die Zertifizierungsstelle handelt`ACTIVE`. Wenn das CA-Zertifikat aktiviert ist`INACTIVE`, kann das Client-Zertifikat AWS IoT nicht registriert werden.

Wenn Sie den Status des CA-Zertifikats auf `INACTIVE` setzen, verhindern Sie, dass neue Clientzertifikate, die von der CA ausgestellt werden, automatisch registriert werden.

**Anmerkung**  
Alle registrierten Clientzertifikate, die vom kompromittierten CA-Zertifikat signiert wurden, sind so lange weiterhin aktiv, bis Sie sie jeweils explizit widerrufen.

### Deaktivieren eines CA-Zertifikats (Konsole)
<a name="deactivate-ca-cert-console"></a>

**Um ein CA-Zertifikat mit der AWS IoT Konsole zu deaktivieren**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich die Option **Sicher**, wählen Sie **CAs**.

1. Suchen Sie in der Liste der Zertifizierungsstellen diejenige, die Sie deaktivieren möchten, und öffnen Sie das Optionsmenü über das Ellipsensymbol.

1. Wählen Sie im Optionsmenü die Option **Deaktivieren**.

Die Zertifizierungsstelle sollte in der Liste als **Inaktiv** angezeigt werden.

**Anmerkung**  
Die AWS IoT Konsole bietet keine Möglichkeit, die Zertifikate aufzulisten, die von der Zertifizierungsstelle signiert wurden, die Sie deaktiviert haben. Eine Option zum Auflisten dieser Zertifikate mithilfe der AWS CLI finden Sie unter [Deaktivieren eines CA-Zertifikats (CLI)](#deactivate-ca-cert-cli).

### Deaktivieren eines CA-Zertifikats (CLI)
<a name="deactivate-ca-cert-cli"></a>

Das AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)Befehl zum Deaktivieren eines CA-Zertifikats bereit.

```
aws iot update-ca-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html), um eine Liste aller registrierten Clientzertifikate zu erhalten, die von der angegebenen CA signiert wurden. Verwenden Sie für jedes Clientzertifikat, das mit dem angegebenen CA-Zertifikat signiert ist, den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html), um das Clientzertifikat zu widerrufen und dadurch zu verhindern, dass es verwendet wird.

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html), um den Status des CA-Zertifikats anzuzeigen.

# Erstellen eines Clientzertifikats mit Ihrem CA-Zertifikat
<a name="create-device-cert"></a>

Sie können Ihre eigene Zertifizierungsstelle (Certificate Authority, CA) zum Erstellen von Clientzertifikaten verwenden. Das Client-Zertifikat muss AWS IoT vor der Verwendung registriert werden. Weitere Informationen zu den Registrierungsoptionen für Ihre Clientzertifikate finden Sie unter [Registrieren eines Clientzertifikats](register-device-cert.md).

## Erstellen eines Clientzertifikats (CLI)
<a name="create-device-cert-cli"></a>

**Anmerkung**  
Sie können dieses Verfahren nicht in der AWS IoT Konsole ausführen.

**Um ein Client-Zertifikat mit dem zu erstellen AWS CLI**

1. Erzeugen Sie ein Schlüsselpaar.

   ```
   openssl genrsa -out device_cert_key_filename.key 2048
   ```

1. Erstellen Sie eine CSR für das Clientzertifikat.

   ```
   openssl req -new \
       -key device_cert_key_filename.key \
       -out device_cert_csr_filename.csr
   ```

   Sie werden zur Eingabe einiger Informationen aufgefordert, wie hier gezeigt:

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Erstellen Sie ein Clientzertifikat aus der CSR.

   ```
   openssl x509 -req \
       -in device_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out device_cert_filename.pem \
       -days 500 -sha256
   ```

 Zu diesem Zeitpunkt wurde das Client-Zertifikat erstellt, aber es wurde noch nicht registriert AWS IoT. Weitere Informationen dazu, wie und wann das Clientzertifikat registriert werden soll, finden Sie unter [Registrieren eines Clientzertifikats](register-device-cert.md). 

# Registrieren eines Clientzertifikats
<a name="register-device-cert"></a>

Client-Zertifikate müssen registriert sein AWS IoT , um die Kommunikation zwischen dem Client und zu ermöglichen AWS IoT. Sie können jedes Client-Zertifikat manuell registrieren, oder Sie können die Client-Zertifikate so konfigurieren, dass sie automatisch registriert werden, wenn der Client AWS IoT zum ersten Mal eine Verbindung herstellt.

 Wenn Sie möchten, dass Ihre Clients und Geräte ihre Clientzertifikate registrieren, wenn sie sich zum ersten Mal verbinden, müssen Sie [Registrieren eines CA-Zertifikats](manage-your-CA-certs.md#register-CA-cert) das Clientzertifikat in den Regionen bei AWS IoT signieren, in denen Sie es verwenden möchten. Die Amazon Root-CA wird automatisch bei registriert AWS IoT. 

Kundenzertifikate können nach AWS-Konten Regionen gemeinsam genutzt werden. Die Verfahren in diesen Themen müssen in jedem Konto und jeder Region ausgeführt werden, in der Sie das Clientzertifikat verwenden möchten. Die Registrierung eines Clientzertifikats in einem Konto oder einer Region wird von einem anderen Konto/einer anderen Region nicht automatisch erkannt.

**Anmerkung**  
Clients, die das TLS-Protokoll (Transport Layer Security) verwenden, um eine Verbindung mit AWS IoT herzustellen, müssen die [SNI-Erweiterung (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) für TLS unterstützen. Weitere Informationen finden Sie unter [Transportsicherheit in AWS IoT Core](transport-security.md).

**Topics**
+ [

# Manuelles Registrieren eines Clientzertifikats
](manual-cert-registration.md)
+ [

# Registrieren Sie ein Client-Zertifikat, wenn der Client eine Verbindung zur AWS IoT just-in-time Registrierung herstellt (JITR)
](auto-register-device-cert.md)

# Manuelles Registrieren eines Clientzertifikats
<a name="manual-cert-registration"></a>

Sie können ein Client-Zertifikat manuell registrieren, indem Sie die AWS IoT Konsole und verwenden AWS CLI.

Das anzuwendende Registrierungsverfahren hängt davon ab, ob das Zertifikat von AWS-Konto s und Regionen gemeinsam genutzt wird. Die Registrierung eines Clientzertifikats in einem Konto oder einer Region wird von einem anderen Konto/einer anderen Region nicht automatisch erkannt.

Die Verfahren in diesem Thema müssen in jedem Konto und jeder Region ausgeführt werden, in der Sie das Clientzertifikat verwenden möchten. Client-Zertifikate können von AWS-Konto s und Regionen gemeinsam genutzt werden. 

## Registrieren eines von einer registrierten CA signierten Clientzertifikats (Konsole)
<a name="manual-cert-registration-console"></a>

**Anmerkung**  
Bevor Sie dieses Verfahren ausführen, stellen Sie sicher, dass Sie über die PEM-Datei des Client-Zertifikats verfügen und dass das Client-Zertifikat von einer Zertifizierungsstelle signiert wurde, bei der Sie sich [registriert](manage-your-CA-certs.md#register-CA-cert) haben. AWS IoT

**Um ein vorhandenes Zertifikat AWS IoT mithilfe der Konsole zu registrieren**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im Navigationsbereich im Abschnitt **Verwalten** die Option **Sicherheit** und anschließend **Zertifikate**.

1. Wählen Sie auf der Seite **Zertifikate** im Dialogfeld **Zertifikate** die Option **Zertifikat hinzufügen** und dann **Zertifikate registrieren**.

1. Gehen Sie auf der Seite **Zertifikat registrieren** im Dialogfeld **Hochzuladende Zertifikate** wie folgt vor:
   + Wählen Sie **Zertifizierungsstelle ist bei AWS IoT registriert**.
   + Wählen Sie unter **CA-Zertifikat auswählen** Ihre **Zertifizierungsstelle** aus. 
     + Wählen Sie **Neue Zertifizierungsstelle registrieren** aus, um eine neue **Zertifizierungsstelle** zu registrieren, die nicht bei AWS IoT registriert ist.
     + Lassen Sie **CA-Zertifikat auswählen** leer, wenn die **Amazon-Root-Zertifizierungsstelle** Ihre Zertifizierungsstelle ist.
   + Wählen Sie bis zu 10 Zertifikate aus, die Sie hochladen und mit denen Sie sich registrieren möchten AWS IoT.
     + Verwenden Sie die Zertifikatsdateien, die Sie in [Erstellen Sie AWS IoT Client-Zertifikate](device-certs-create.md) und [Erstellen eines Clientzertifikats mit Ihrem CA-Zertifikat](create-device-cert.md) erstellt haben.
   + Wählen Sie **Aktivieren** oder **Deaktivieren**. Wenn Sie **Deaktivieren** wählen, erklärt [Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md), wie Sie Ihr Zertifikat nach der Zertifikatsregistrierung aktivieren.
   + Wählen Sie **Registrieren** aus.

Auf der Seite **Zertifikate** im Dialogfeld **Zertifikate** werden nun Ihre registrierten Zertifikate angezeigt.

## Registrieren eines von einer nicht registrierten CA signierten Clientzertifikats (Konsole)
<a name="manual-cert-registration-console-noca"></a>

**Anmerkung**  
Stellen Sie sicher, dass Sie über die PEM-Datei des Clientzertifikats verfügen, bevor Sie dieses Verfahren ausführen.

**Um ein vorhandenes Zertifikat AWS IoT mithilfe der Konsole zu registrieren**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern**, **Zertifikate** und anschließend **Erstellen** aus.

1. Suchen Sie unter **Zertifikat erstellen** den Eintrag **Eigenes Zertifikat verwenden** und wählen Sie **Erste Schritte**.

1. Wählen Sie unter **CA auswählen** die Option **Weiter**.

1.  Wählen Sie unter **Vorhandene Gerätezertifikate registrieren** die Option **Zertifikate auswählen** und wählen Sie bis zu zehn Zertifikatdateien zum Registrieren aus. 

1.  Schließen Sie das Dateidialogfeld und wählen Sie aus, ob Sie die Clientzertifikate bei der Registrierung aktivieren oder widerrufen möchten.

   Wenn Sie ein Zertifikat bei der Registrierung nicht aktivieren, können Sie unter [Aktivieren eines Clientzertifikats (Konsole)](activate-or-deactivate-device-cert.md#activate-device-cert-console) nachlesen, wie Sie es zu einem späteren Zeitpunkt aktivieren können. 

   Wenn ein Zertifikat bei der Registrierung widerrufen wird, kann es später nicht aktiviert werden.

   Nachdem Sie die zu registrierenden Zertifikatdateien und die nach der Registrierung auszuführenden Aktionen ausgewählt haben, klicken Sie auf **Zertifikate registrieren**.

Die erfolgreich registrierten Clientzertifikate werden in der Liste der Zertifikate angezeigt.

## Registrieren eines von einer registrierten CA signierten Clientzertifikats (CLI)
<a name="manual-cert-registration-cli"></a>

**Anmerkung**  
Stellen Sie sicher, dass Sie über die PEM-Datei der CA und über die PEM-Datei des Clientzertifikats verfügen, bevor Sie dieses Verfahren ausführen. Das Client-Zertifikat muss von einer Zertifizierungsstelle (CA) signiert sein, [bei der Sie sich registriert](manage-your-CA-certs.md#register-CA-cert) haben AWS IoT.

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html), um ein Clientzertifikat zu registrieren, ohne es zu aktivieren.

```
aws iot register-certificate \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

Das Client-Zertifikat ist bei registriert AWS IoT, aber es ist noch nicht aktiv. Informationen dazu, wie Sie es zu einem späteren Zeitpunkt aktivieren können, finden Sie unter [Aktivieren eines Clientzertifikats (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli).

Sie können das Clientzertifikat auch aktivieren, wenn Sie es mit dem folgenden Befehl registrieren.

```
aws iot register-certificate \
    --set-as-active \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

Weitere Informationen zur Aktivierung des Zertifikats, sodass es für die Herstellung einer Verbindung verwendet werden kann AWS IoT, finden Sie unter [Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md)

## Registrieren eines von einer nicht registrierten CA signierten Clientzertifikats (CLI)
<a name="manual-cert-registration-noca-cli"></a>

**Anmerkung**  
Stellen Sie sicher, dass Sie über die PEM-Datei des Zertifikats verfügen, bevor Sie dieses Verfahren ausführen.

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html), um ein Clientzertifikat zu registrieren, ohne es zu aktivieren.

```
aws iot register-certificate-without-ca \
    --certificate-pem file://device_cert_filename.pem
```

Das Client-Zertifikat ist registriert AWS IoT, aber es ist noch nicht aktiv. Informationen dazu, wie Sie es zu einem späteren Zeitpunkt aktivieren können, finden Sie unter [Aktivieren eines Clientzertifikats (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli).

Sie können das Clientzertifikat auch aktivieren, wenn Sie es mit dem folgenden Befehl registrieren.

```
aws iot register-certificate-without-ca \
    --status ACTIVE \
    --certificate-pem file://device_cert_filename.pem
```

Weitere Hinweise zur Aktivierung des Zertifikats, sodass es für die Herstellung einer Verbindung verwendet werden kann AWS IoT, finden Sie unter[Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md).

# Registrieren Sie ein Client-Zertifikat, wenn der Client eine Verbindung zur AWS IoT just-in-time Registrierung herstellt (JITR)
<a name="auto-register-device-cert"></a>

Sie können ein CA-Zertifikat so konfigurieren, dass Client-Zertifikate, mit denen es signiert wurde, AWS IoT automatisch registriert werden, wenn der Client zum AWS IoT ersten Mal eine Verbindung herstellt.

Um Client-Zertifikate zu registrieren, wenn ein Client AWS IoT zum ersten Mal eine Verbindung herstellt, müssen Sie das CA-Zertifikat für die automatische Registrierung aktivieren und die erste Verbindung des Clients so konfigurieren, dass die erforderlichen Zertifikate bereitgestellt werden.

## Konfigurieren eines CA-Zertifikats zur Unterstützung der automatischen Registrierung (Konsole)
<a name="enable-auto-registration-console"></a>

**Um ein CA-Zertifikat zur Unterstützung der automatischen Registrierung von Client-Zertifikaten mithilfe der AWS IoT Konsole zu konfigurieren**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Secure**, wählen Sie **CAs**.

1. Suchen Sie in der Liste der Zertifizierungsstellen diejenige, für die Sie die automatische Registrierung aktivieren möchten, und öffnen Sie das Optionsmenü über das Ellipsensymbol.

1. Wählen Sie im Optionsmenü **Automatische Registrierung aktivieren**.

**Anmerkung**  
Der Status der automatischen Registrierung wird in der Liste der Zertifizierungsstellen nicht angezeigt. Um den Status der automatischen Registrierung einer Zertifizierungsstelle anzuzeigen, müssen Sie die Seite **Details** der Zertifizierungsstelle öffnen.

## Konfigurieren eines CA-Zertifikats zur Unterstützung der automatischen Registrierung (CLI)
<a name="enable-auto-registration-cli"></a>

Wenn Sie Ihr CA-Zertifikat bereits registriert haben AWS IoT, verwenden Sie den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)Befehl, um das CA-Zertifikat auf festzulegen `autoRegistrationStatus``ENABLE`.

```
aws iot update-ca-certificate \
--certificate-id caCertificateId \
--new-auto-registration-status ENABLE
```

Wenn Sie `autoRegistrationStatus` bei der Registrierung des CA-Zertifikats aktivieren möchten, verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html).

```
aws iot register-ca-certificate \
--allow-auto-registration  \
--ca-certificate file://root_CA_cert_filename.pem \
--verification-cert file://verification_cert_filename.pem
```

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html), um den Status des CA-Zertifikats anzuzeigen.

## Konfigurieren der ersten Verbindung durch einen Client für die automatische Registrierung
<a name="configure-auto-reg-first-connect"></a>

Wenn ein Client zum ersten Mal versucht, eine Verbindung herzustellen, muss das mit Ihrem CA-Zertifikat signierte Client-Zertifikat während des Transport Layer Security (TLS) -Handshakes auf dem Client vorhanden sein. AWS IoT 

Wenn der Client eine Verbindung herstellt AWS IoT, verwenden Sie das Client-Zertifikat, das Sie unter [AWS IoT Client-Zertifikate erstellen](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-create.html) oder [Eigene Client-Zertifikate erstellen](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html) erstellt haben. AWS IoT erkennt das CA-Zertifikat als registriertes CA-Zertifikat, registriert das Client-Zertifikat und setzt seinen Status auf`PENDING_ACTIVATION`. Das bedeutet, dass das Clientzertifikat automatisch registriert wurde und auf die Aktivierung wartet. Das Clientzertifikat muss den Status `ACTIVE` aufweisen, damit es zur Verbindung mit AWS IoT verwendet werden kann. Informationen zur Aktivierung eines Clientzertifikats finden Sie unter [Aktivieren oder Deaktivieren eines Clientzertifikats](activate-or-deactivate-device-cert.md).

**Anmerkung**  
Sie können Geräte mithilfe der AWS IoT Core just-in-time Registrierungsfunktion (JITR) bereitstellen, ohne die gesamte Vertrauenskette bei der ersten Verbindung der Geräte an senden zu müssen. AWS IoT Core Die Vorlage des CA-Zertifikats ist optional, aber das Gerät muss die [Server Name Indication (SNI)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) senden, wenn es eine Verbindung herstellt.

Wenn ein Zertifikat AWS IoT automatisch registriert wird oder wenn ein Client ein Zertifikat im `PENDING_ACTIVATION` Status präsentiert, wird eine Nachricht zum folgenden MQTT-Thema AWS IoT veröffentlicht:

`$aws/events/certificates/registered/caCertificateId`

Dabei ist `caCertificateId` die ID des CA-Zertifikats, das das Gerätezertifikat ausgestellt hat.

Die im Topic veröffentlichte Nachricht weist die folgende Struktur auf:

```
{
        "certificateId": "certificateId",
        "caCertificateId": "caCertificateId",
        "timestamp": timestamp,
        "certificateStatus": "PENDING_ACTIVATION",
        "awsAccountId": "awsAccountId",
        "certificateRegistrationTimestamp": "certificateRegistrationTimestamp"
}
```

Sie können eine Regel zum Beobachten dieses Topics und Ausführen bestimmter Aktionen erstellen. Wir empfehlen, eine Lambda-Regel zu erstellen, mit der sichergestellt wird, dass sich das Clientzertifikat nicht auf einer Zertifikataufhebungsliste (Certificate Revocation List, CRL) befindet, und mit der das Zertifikat aktiviert und eine Richtlinie erstellt und an das Zertifikat angefügt wird. Die Richtlinie bestimmt, auf welche Ressourcen der Client zugreifen kann. Wenn die Richtlinie, die Sie erstellen, die Client-ID von den Verbindungsgeräten benötigt, können Sie die Client-ID () -Funktion der Regel verwenden, um die Client-ID abzurufen. Ein Beispiel für eine Regeldefinition kann wie folgt aussehen:

```
SELECT *,
   clientid() as clientid
from $aws/events/certificates/registered/caCertificateId
```

In diesem Beispiel abonniert die Regel das JITR-Thema `$aws/events/certificates/registered/caCertificateID` und verwendet die Funktion clientid (), um die Client-ID abzurufen. Die Regel hängt dann die Client-ID an die JITR-Nutzlast an. [Weitere Hinweise zur clientid () -Funktion der Regel finden Sie unter clientid ().](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-clientid)

Weitere Informationen zum Erstellen einer Lambda-Regel, die das `$aws/events/certificates/registered/caCertificateID` Thema überwacht und diese Aktionen ausführt, finden Sie unter [just-in-time Registrierung von Client-Zertifikaten](https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/) am. AWS IoT

Wenn bei der automatischen Registrierung der Client-Zertifikate ein Fehler oder eine Ausnahme auftritt, AWS IoT sendet es Ereignisse oder Meldungen an Ihre Logs in CloudWatch Logs. Weitere Informationen zur Einrichtung der Logs für Ihr Konto finden Sie in der [ CloudWatch Amazon-Dokumentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/).

# Kundenzertifikate verwalten
<a name="manage-device-cert"></a>

AWS IoT bietet Funktionen zur Verwaltung von Client-Zertifikaten.

**Topics**
+ [

# Aktivieren oder Deaktivieren eines Clientzertifikats
](activate-or-deactivate-device-cert.md)
+ [

# Anfügen eines Objekts oder einer Richtlinie an ein Clientzertifikat
](attach-to-cert.md)
+ [

# Widerrufen eines Clientzertifikats
](revoke-ca-cert.md)
+ [

# Übertragen eines Zertifikats in ein anderes Konto
](transfer-cert.md)

# Aktivieren oder Deaktivieren eines Clientzertifikats
<a name="activate-or-deactivate-device-cert"></a>

AWS IoT überprüft, ob ein Client-Zertifikat aktiv ist, wenn es eine Verbindung authentifiziert.

Sie können Clientzertifikate erstellen und registrieren, ohne sie zu aktivieren, sodass sie erst verwendet werden können, wenn Sie dies möchten. Sie können auch aktive Clientzertifikate deaktivieren, um sie vorübergehend zu deaktivieren. Und Sie können Clientzertifikate widerrufen, um deren zukünftige Verwendung zu verhindern. 

## Aktivieren eines Clientzertifikats (Konsole)
<a name="activate-device-cert-console"></a>

**Um ein Client-Zertifikat mit der Konsole zu aktivieren AWS IoT**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

1. Suchen Sie in der Liste der Zertifikate dasjenige, die Sie aktivieren möchten, und öffnen Sie das Optionsmenü über das Ellipsensymbol.

1. Wählen Sie im Optionsmenü die Option **Aktivieren**.

Das Zertifikat sollte in der Liste der Zertifikate als **Aktiv** angezeigt werden.

## Deaktivieren eines Clientzertifikats (Konsole)
<a name="deactivate-device-cert-console"></a>

**Um ein Client-Zertifikat über die AWS IoT Konsole zu deaktivieren**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

1. Suchen Sie in der Liste der Zertifikate dasjenige, die Sie deaktivieren möchten, und öffnen Sie das Optionsmenü über das Ellipsensymbol.

1. Wählen Sie im Optionsmenü die Option **Deaktivieren**.

Das Zertifikat sollte in der Liste der Zertifikate als **Inaktiv** angezeigt werden.

## Aktivieren eines Clientzertifikats (CLI)
<a name="activate-device-cert-cli"></a>

Das AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)Befehl zur Aktivierung eines Zertifikats bereit.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status ACTIVE
```

Wenn der Befehl erfolgreich ist, wird der Status des Zertifikats auf `ACTIVE` gesetzt. Führen Sie [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) aus, um den Status des Zertifikats anzuzeigen.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

## Deaktivieren eines Clientzertifikats (CLI)
<a name="deactivate-device-cert-cli"></a>

Der AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)Befehl zum Deaktivieren eines Zertifikats bereit.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Wenn der Befehl erfolgreich ist, wird der Status des Zertifikats auf `INACTIVE` gesetzt. Führen Sie [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) aus, um den Status des Zertifikats anzuzeigen.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Anfügen eines Objekts oder einer Richtlinie an ein Clientzertifikat
<a name="attach-to-cert"></a>

Wenn Sie ein Zertifikat unabhängig von einer AWS IoT Sache erstellen und registrieren, wird es weder über Richtlinien verfügen, die AWS IoT Operationen autorisieren, noch wird es mit einem Objekt verknüpft. AWS IoT In diesem Abschnitt wird beschrieben, wie Sie diese Beziehungen zu einem registrierten Zertifikat hinzufügen.

**Wichtig**  
Um dieses Verfahren ausführen zu können, müssen Sie das Objekt oder die Richtlinie, das/die Sie an das Zertifikat anfügen möchten, bereits erstellt haben.

Das Zertifikat authentifiziert ein Gerät mit, AWS IoT sodass es eine Verbindung herstellen kann. Durch das Anhängen des Zertifikats an eine Objektressource wird die Beziehung zwischen dem Gerät (über das Zertifikat) und der Objektressource hergestellt. Um das Gerät zur Ausführung von AWS IoT Aktionen zu autorisieren, z. B. damit das Gerät eine Verbindung herstellen und Nachrichten veröffentlichen kann, muss dem Zertifikat des Geräts eine entsprechende Richtlinie beigefügt werden. 

## Anfügen eines Objekts an ein Clientzertifikat (Konsole)
<a name="attach-to-cert-thing-console"></a>

Sie benötigen für dieses Verfahren den Namen des Objekts.

**So fügen Sie ein Objekt an ein registriertes Zertifikat an**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sicher** und dann **Zertifikate**.

1. Suchen Sie in der Zertifikatsliste das Zertifikat, an das Sie eine Richtlinie anfügen möchten, öffnen Sie das Optionsmenü des Zertifikats über das Ellipsensymbol und wählen Sie **Objekt anfügen**.

1. Suchen Sie im Pop-up-Fenster den Namen des Objekts, das Sie an das Zertifikat anfügen möchten, markieren Sie das entsprechende Kontrollkästchen und wählen Sie **Anfügen**.

Das Objekt sollte nun in der Objektliste auf der Detailseite des Zertifikats angezeigt werden.

## Anfügen einer Richtlinie an ein Clientzertifikat (Konsole)
<a name="attach-to-cert-policy-console"></a>

Sie benötigen für dieses Verfahren den Namen des Richtlinienobjekts.

**So fügen Sie ein Richtlinienobjekt an ein registriertes Zertifikat an**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

1. Suchen Sie in der Zertifikatsliste das Zertifikat, an das Sie eine Richtlinie anfügen möchten, öffnen Sie das Optionsmenü des Zertifikats über das Ellipsensymbol und wählen Sie **Richtlinie anfügen**. 

1. Suchen Sie im Pop-up-Fenster den Namen der Richtlinie, die Sie an das Zertifikat anfügen möchten, markieren Sie das entsprechende Kontrollkästchen und wählen Sie **Anfügen**.

Das Richtlinienobjekt sollte nun in der Richtlinienliste auf der Detailseite des Zertifikats angezeigt werden.

## Anfügen eines Objekts an ein Clientzertifikat (CLI)
<a name="attach-to-cert-thing-cli"></a>

Das AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html)Befehl zum Anhängen eines Dingobjekts an ein Zertifikat bereit.

```
aws iot attach-thing-principal \
    --principal certificateArn \
    --thing-name thingName
```

## Anfügen einer Richtlinie an ein Clientzertifikat (CLI)
<a name="attach-to-cert-policy-cli"></a>

Der AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html)Befehl zum Anhängen eines Richtlinienobjekts an ein Zertifikat bereit.

```
aws iot attach-policy \
    --target certificateArn \
    --policy-name policyName
```

# Widerrufen eines Clientzertifikats
<a name="revoke-ca-cert"></a>

Wenn Sie verdächtige Aktivitäten in einem registrierten Clientzertifikat erkennen, können Sie es widerrufen, damit es nicht noch einmal verwendet werden kann.

**Anmerkung**  
Sobald ein Zertifikat gesperrt wurde, kann sein Status nicht mehr geändert werden. Das heißt, dass der Status des Zertifikats nicht in `Active` oder einen anderen Status geändert werden kann.

## Widerrufen eines Clientzertifikats (Konsole)
<a name="revoke-device-cert-console"></a>

**Um ein Client-Zertifikat mithilfe der AWS IoT Konsole zu widerrufen**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

1. Suchen Sie in der Liste der Zertifikate dasjenige, die Sie widerrufen möchten, und öffnen Sie das Optionsmenü über das Ellipsensymbol.

1. Wählen Sie im Optionsmenü die Option **Widerrufen**.

Wenn das Zertifikat erfolgreich widerrufen wurde, wird es in der Liste der Zertifikate als **Widerrufen** angezeigt.

## Widerrufen eines Clientzertifikats (CLI)
<a name="revoke-device-cert-cli"></a>

Das AWS CLI stellt den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)Befehl zum Widerrufen eines Zertifikats bereit.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status REVOKED
```

Wenn der Befehl erfolgreich ist, wird der Status des Zertifikats auf `REVOKED` gesetzt. Führen Sie [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) aus, um den Status des Zertifikats anzuzeigen.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Übertragen eines Zertifikats in ein anderes Konto
<a name="transfer-cert"></a>

X.509-Zertifikate, die zu einem Zertifikat gehören, AWS-Konto können auf ein anderes AWS-Kontoübertragen werden.

**Um ein X.509-Zertifikat von einem auf ein anderes zu AWS-Konto übertragen**

1. [Starten einer Zertifikatsübertragung](#transfer-cert-init)

   Das Zertifikat muss deaktiviert und von allen Richtlinien und Objekten getrennt werden, bevor die Übertragung gestartet wird.

1. [Annehmen oder Ablehnen einer Zertifikatsübertragung](#transfer-cert-accept)

   Das empfangende Konto muss das übertragene Zertifikat ausdrücklich akzeptieren oder ablehnen. Nachdem das Empfängerkonto das Zertifikat akzeptiert hat, muss das Zertifikat aktiviert werden, bevor es verwendet werden kann.

1. [Abbrechen einer Zertifikatsübertragung](#transfer-cert-cancel)

   Das ursprüngliche Konto kann eine Übertragung abbrechen, wenn das Zertifikat nicht akzeptiert wurde.

## Starten einer Zertifikatsübertragung
<a name="transfer-cert-init"></a>

Sie können mit der Übertragung eines Zertifikats auf ein anderes beginnen, AWS-Konto indem Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home) oder das AWS CLI verwenden.

### Starten einer Zertifikatsübertragung (Konsole)
<a name="transfer-cert-init-console"></a>

Sie benötigen die ID des Zertifikats, das Sie übertragen möchten. um dieses Verfahren abzuschließen.

Führen Sie dieses Verfahren von dem Konto aus, das das zu übertragende Zertifikat enthält.

**Um mit der Übertragung eines Zertifikats auf ein anderes zu beginnen AWS-Konto**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

   Wählen Sie das Zertifikat mit dem Status **Aktiv** oder **Inaktiv** aus, das Sie übertragen möchten, und öffnen Sie die zugehörige Detailseite.

1. Wenn auf der Seite **Details** des Zertifikats im Menü **Aktionen** die Option **Deaktivieren** verfügbar ist, wählen Sie die Option **Deaktivieren**, um das Zertifikat zu deaktivieren.

1. Wählen Sie auf der Seite **Details** des Zertifikats im linken Menü die Option **Richtlinien**.

1. Wenn auf der Seite **Richtlinien** des Zertifikats Richtlinien mit dem Zertifikat verknüpft sind, trennen Sie die einzelnen Richtlinien, indem Sie das Optionsmenü der Richtlinie öffnen und **Trennen** wählen.

   Bevor Sie fortfahren, dürfen mit dem Zertifikat keine Richtlinien verbunden sein.

1. Wählen Sie auf der Seite **Richtlinien** des Zertifikats im linken Menü die Option **Objekte**.

1. Wenn auf der Seite **Objekte** des Zertifikats Objekte mit dem Zertifikat verknüpft sind, trennen Sie die einzelnen Objekte, indem Sie das Optionsmenü des Objekts öffnen und **Trennen** wählen.

   Bevor Sie fortfahren, dürfen mit dem Zertifikat keine Objekte verbunden sein.

1. Wählen Sie auf der Seite **Details** des Zertifikats im linken Menü die Option **Details**.

1. Wählen Sie auf der Seite **Details** des Zertifikats im Menü **Aktionen** die Option **Übertragung starten**, um das Dialogfeld **Übertragung starten** zu öffnen.

1. Geben **Sie im Dialogfeld Übertragung starten** die AWS-Konto Nummer des Kontos ein, das das Zertifikat erhalten soll, und optional eine Kurznachricht.

1. Wählen Sie **Übertragung starten**, um das Zertifikat zu übertragen.

Die Konsole sollte eine Meldung anzeigen, die den Erfolg oder Misserfolg der Übertragung angibt. Wenn die Übertragung gestartet wurde, wird der Status des Zertifikats auf **Übertragen** aktualisiert.

### Starten einer Zertifikatsübertragung (CLI)
<a name="transfer-cert-init-cli"></a>

Um dieses Verfahren abzuschließen, benötigen Sie das *certificateId* und das *certificateArn* Zertifikat, das Sie übertragen möchten.

Führen Sie dieses Verfahren von dem Konto aus, das das zu übertragende Zertifikat enthält.

**Um mit der Übertragung eines Zertifikats auf ein anderes AWS Konto zu beginnen**

1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) zum Deaktivieren des Zertifikats.

   ```
   aws iot update-certificate --certificate-id certificateId --new-status INACTIVE
   ```

1. Trennen Sie alle Richtlinien.

   1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html), um die an das Zertifikat angehängten Richtlinien aufzulisten.

      ```
      aws iot list-attached-policies --target certificateArn
      ```

   1. Verwenden Sie für jede angehängte Richtlinie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html), um die Richtlinie zu trennen.

      ```
      aws iot detach-policy --target certificateArn --policy-name policy-name
      ```

1. Trennen Sie alle Objekte.

   1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html), um die an das Zertifikat angehängten Objekte aufzulisten.

      ```
      aws iot list-principal-things --principal certificateArn
      ```

   1. Verwenden Sie für jedes angehängte Objekt den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html), um das Objekt zu trennen.

      ```
      aws iot detach-thing-principal --principal certificateArn --thing-name thing-name
      ```

1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html), um die Zertifikatsübertragung zu starten.

   ```
   aws iot transfer-certificate --certificate-id certificateId --target-aws-account account-id
   ```

## Annehmen oder Ablehnen einer Zertifikatsübertragung
<a name="transfer-cert-accept"></a>

Sie können ein Zertifikat, das Ihnen AWS-Konto von einem anderen übertragen wurde, akzeptieren oder ablehnen, AWS-Konto indem Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home) oder das verwenden AWS CLI.

### Annehmen oder Ablehnen einer Zertifikatsübertragung (Konsole)
<a name="transfer-cert-accept-console"></a>

Sie benötigen die ID des Zertifikats, das in Ihr Konto übertragen wurde, um dieses Verfahren abzuschließen.

Führen Sie dieses Verfahren von dem Konto aus, das das übertragende Zertifikat empfängt.

**Um ein Zertifikat zu akzeptieren oder abzulehnen, das auf Ihr AWS-Konto**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

   Wählen Sie das Zertifikat mit dem Status **Ausstehende Übertragung** aus, das Sie akzeptieren oder ablehnen möchten, und öffnen Sie die zugehörige Detailseite.

1. Auf der **Detailseite** des Zertifikats im Menü **Aktionen**,
   + Wählen Sie **Übertragung akzeptieren**, um das Zertifikat zu akzeptieren.
   + Wählen Sie **Übertragung ablehnen**, um das Zertifikat abzulehnen.

### Annehmen oder Ablehnen einer Zertifikatsübertragung (CLI)
<a name="transfer-cert-accept-cli"></a>

Um dieses Verfahren abzuschließen, benötigen Sie den Namen *certificateId* der Zertifikatsübertragung, die Sie akzeptieren oder ablehnen möchten.

Führen Sie dieses Verfahren von dem Konto aus, das das übertragende Zertifikat empfängt.

**Um ein Zertifikat zu akzeptieren oder abzulehnen, das auf Ihr AWS-Konto**

1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html), um das Zertifikat zu akzeptieren.

   ```
   aws iot accept-certificate-transfer --certificate-id certificateId
   ```

1. Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html), um das Zertifikat abzulehnen.

   ```
   aws iot reject-certificate-transfer --certificate-id certificateId
   ```

## Abbrechen einer Zertifikatsübertragung
<a name="transfer-cert-cancel"></a>

Sie können eine Zertifikatsübertragung abbrechen, bevor sie akzeptiert wurde, indem Sie die [AWS IoT -Konsole](https://console.aws.amazon.com/iot/home) oder die AWS CLI verwenden.

### Abbrechen einer Zertifikatsübertragung (Konsole)
<a name="transfer-cert-cancel-console"></a>

Sie benötigen die ID der Zertifikatsübertragung, die Sie abbrechen möchten, um dieses Verfahren abzuschließen.

Führen Sie dieses Verfahren von dem Konto aus, das die Zertifikatsübertragung gestartet hat.

**So brechen Sie eine Zertifikatsübertragung ab**

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die [AWS IoT Konsole](https://console.aws.amazon.com/iot/home).

1. Wählen Sie im linken Navigationsbereich **Sichern** und dann **Zertifikate**.

   Wählen Sie das Zertifikat mit dem Status **Übertragen** aus, dessen Übertragung Sie stornieren möchten, und öffnen Sie das zugehörige Optionsmenü.

1. Wählen Sie im Optionsmenü des Zertifikats die Option **Übertragung widerrufen**, um die Zertifikatsübertragung abzubrechen.
**Wichtig**  
Achten Sie darauf, die Option **Übertragung widerrufen** nicht mit der Option **Widerrufen** zu verwechseln.  
Mit der Option **Übertragung widerrufen** wird die Zertifikatsübertragung abgebrochen, während die Option **Widerrufen** das Zertifikat für das AWS IoT unwiderruflich unbrauchbar macht. 

### Abbrechen einer Zertifikatsübertragung (CLI)
<a name="transfer-cert-cancel-cli"></a>

Um dieses Verfahren abzuschließen, benötigen Sie den Namen *certificateId* der Zertifikatsübertragung, die Sie stornieren möchten.

Führen Sie dieses Verfahren von dem Konto aus, das die Zertifikatsübertragung gestartet hat.

Verwenden Sie den Befehl [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html), um die Zertifikatsübertragung abzubrechen.

```
aws iot cancel-certificate-transfer --certificate-id certificateId
```

# Benutzerdefinierte Validierung von Client-Zertifikaten
<a name="customize-client-auth"></a>

AWS IoT Core unterstützt die benutzerdefinierte Validierung von Client-Zertifikaten für X.509-Clientzertifikate, wodurch die Verwaltung der Client-Authentifizierung verbessert wird. Diese Methode zur Zertifikatsvalidierung wird auch als Zertifikatsprüfung vor der Authentifizierung bezeichnet. Dabei bewerten Sie Client-Zertifikate anhand Ihrer eigenen Kriterien (definiert in einer Lambda-Funktion) und widerrufen Client-Zertifikate oder das Zertifikat der Signing Certificate Authority (CA) der Zertifikate, um zu verhindern, dass Clients eine Verbindung herstellen können. AWS IoT Core Sie können beispielsweise Ihre eigenen Zertifikatssperrprüfungen erstellen, die den Status der Zertifikate anhand von Validierungsstellen überprüfen, die [Online Certificate Status Protocol (OCSP)](https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol) oder [Certificate Revocation Lists (CRL)](https://en.wikipedia.org/wiki/Certificate_revocation_list) Endpunkte unterstützen, und Verbindungen für Clients mit gesperrten Zertifikaten verhindern. Die Kriterien, die zur Bewertung von Client-Zertifikaten verwendet werden, werden 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](protocols.md#connection-protocol-auth-mode) muss ein X.509-Zertifikat sein. Darüber hinaus müssen Clients die Erweiterung [Server Name Indication (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) angeben, wenn sie eine Verbindung herstellen. AWS IoT Core

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

**Topics**
+ [

## Schritt 1: Registrieren Sie Ihre X.509-Client-Zertifikate bei AWS IoT Core
](#client-auth-cert-verification)
+ [

## Schritt 2: Erstellen einer Lambda-Funktion
](#customize-client-auth-lambda)
+ [

## Schritt 3: Autorisieren Sie AWS IoT den Aufruf Ihrer Lambda-Funktion
](#customize-client-configuration-grant-permission)
+ [

## Schritt 4: Legen Sie die Authentifizierungskonfiguration für eine Domain fest
](#customize-client-configuration)

## Schritt 1: Registrieren Sie Ihre X.509-Client-Zertifikate bei AWS IoT Core
<a name="client-auth-cert-verification"></a>

Falls Sie dies noch nicht getan haben, registrieren und aktivieren Sie Ihre [X.509-Client-Zertifikate](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) mit. 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 [Kundenzertifikate direkt mit erstellen AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Diese Client-Zertifikate werden automatisch bei registriert AWS IoT Core.

1. Wenn Sie [Ihre eigenen Client-Zertifikate erstellen](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), folgen Sie [diesen Anweisungen, um sie zu registrieren AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. Folgen Sie [diesen Anweisungen](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html), um Ihre Client-Zertifikate zu aktivieren.

## Schritt 2: Erstellen einer Lambda-Funktion
<a name="customize-client-auth-lambda"></a>

Sie müssen eine Lambda-Funktion erstellen, die die Zertifikatsverifizierung durchführt und bei jedem Verbindungsversuch eines Clients für den konfigurierten Endpunkt aufgerufen wird. Folgen Sie beim Erstellen dieser Lambda-Funktion den allgemeinen Anweisungen unter [Erstellen Sie Ihre erste Lambda-Funktion](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html). Stellen Sie außerdem sicher, dass die Lambda-Funktion die erwarteten Anfrage- und Antwortformate wie folgt einhält:

**Beispiel für ein Lambda-Funktionsereignis**

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

`connectionMetadata`  
Metadaten oder zusätzliche Informationen im Zusammenhang mit der Verbindung des Clients zu AWS IoT Core.

`principalId`  
Die Haupt-ID, die dem Client in der TLS-Verbindung zugeordnet ist.

`serverName`  
Die [Hostnamenzeichenfolge (Server Name Indication, SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). AWS IoT Core erfordert, dass Geräte die [SNI-Erweiterung](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) 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 Anfrage authentifiziert ist.

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

## Schritt 3: Autorisieren Sie AWS IoT den Aufruf Ihrer Lambda-Funktion
<a name="customize-client-configuration-grant-permission"></a>

Nachdem Sie die Lambda-Funktion erstellt haben, müssen Sie mithilfe des AWS IoT CLI-Befehls [add-permission die Erlaubnis erteilen](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html), sie aufzurufen. Beachten Sie, dass diese Lambda-Funktion bei jedem Verbindungsversuch zu Ihrem konfigurierten Endpunkt aufgerufen wird. Weitere Informationen finden Sie unter [Autorisieren des AWS IoT Aufrufs Ihrer Lambda-Funktion](custom-auth-authorize.md).

## Schritt 4: Legen Sie die Authentifizierungskonfiguration für eine Domain fest
<a name="customize-client-configuration"></a>

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

### Konfiguration des Client-Zertifikats für eine Domain festlegen (CLI)
<a name="customize-client-auth-cli"></a>

Wenn Sie keine Domänenkonfiguration haben, verwenden Sie den [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html)CLI-Befehl, um eine zu erstellen. Wenn Sie bereits über eine Domänenkonfiguration verfügen, verwenden Sie den [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html)CLI-Befehl, um die Konfiguration des Client-Zertifikats für eine Domain 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](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Das Anwendungsprotokoll, mit dem Geräte kommunizieren AWS IoT Core. Weitere Informationen finden Sie unter [Auswahl eines Anwendungsprotokolls](protocols.md#protocol-selection).

`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-Schicht aufgerufen wird, wenn eine neue Verbindung hergestellt wird. Um die Client-Authentifizierung für die Durchführung einer benutzerdefinierten Client-Zertifikatsvalidierung anzupassen, müssen Sie den ARN der Lambda-Funktion hinzufügen, die Sie im vorherigen Schritt erstellt haben.

Weitere Informationen finden Sie in [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)und in [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)der *AWS IoT API-Referenz.* Weitere Informationen zu Domänenkonfigurationen finden Sie unter [Domänenkonfigurationen](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# IAM-Benutzer, -Gruppen und -Rollen
<a name="iam-users-groups-roles"></a>

IAM-Benutzer, -Gruppen und -Rollen sind die Standardmechanismen zum Verwalten von Identitäts- und Authentifizierungsmethoden in AWS. Sie können sie verwenden, um mithilfe des AWS SDK und eine Verbindung zu AWS IoT HTTP-Schnittstellen herzustellen AWS CLI.

Mit IAM-Rollen können AWS IoT Sie auch in Ihrem Namen auf andere AWS Ressourcen in Ihrem Konto zugreifen. Wenn Sie beispielsweise möchten, dass ein Gerät seinen Status in einer DynamoDB-Tabelle veröffentlicht, ermöglichen AWS IoT IAM-Rollen die Interaktion mit Amazon DynamoDB. Weitere Informationen finden Sie unter [IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html).

 AWS IoT Authentifiziert bei Message-Broker-Verbindungen über HTTP Benutzer, Gruppen und Rollen mithilfe des Signaturprozesses von Signature Version 4. Weitere Informationen finden Sie unter [AWS API-Anfragen signieren](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

Wenn Sie AWS Signature Version 4 mit verwenden AWS IoT, müssen Clients in ihrer TLS-Implementierung Folgendes unterstützen:
+ TLS 1.2
+ SHA-256 RSA-Zertifikats-Signaturprüfung für RSA-Zertifikate
+ Eine der Cipher-Suiten aus dem Support-Abschnitt der TLS Cipher Suite.

Weitere Informationen finden Sie unter [Identitäts- und Zugriffsmanagement für AWS IoT](security-iam.md).

# Amazon-Cognito-Identitäten
<a name="cognito-identities"></a>

Amazon Cognito Identity ermöglicht es Ihnen, temporäre AWS Anmeldeinformationen mit eingeschränkten Rechten für die Verwendung in Mobil- und Webanwendungen zu erstellen. Wenn Sie Amazon Cognito Identity verwenden, erstellen Sie Identitätspools, die eindeutige Identitäten für Ihre Benutzer erstellen, und authentifizieren Sie sie bei Identitätsanbietern wie Login with Amazon, Facebook und Google. Sie können auch Amazon-Cognito-Identitäten mit Ihren eigenen vom Entwickler authentifizierten Identitäten verwenden. Weitere Informationen finden Sie unter [ Amazon Cognito Identity](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html).

Um Amazon Cognito Identity zu verwenden, definieren Sie einen Amazon Cognito Cognito-Identitätspool, der einer IAM-Rolle zugeordnet ist. Die IAM-Rolle ist mit einer IAM-Richtlinie verknüpft, die Identitäten aus Ihrem Identitätspool den Zugriff auf Ressourcen wie Anrufdienste gewährt. AWS AWS 

Amazon Cognito Identity erstellt nicht authentifizierte und authentifizierte Identitäten. Nicht authentifizierte Identitäten werden für Gastbenutzer in einer mobilen oder Webanwendung verwendet, die die App ohne Anmeldung nutzen möchten. Nicht authentifizierten Benutzern werden nur die Berechtigungen gewährt, die in der dem Identitätspool zugeordneten IAM-Richtlinie angegeben sind.

Wenn Sie authentifizierte Identitäten verwenden, müssen Sie zusätzlich zu der dem Identitätspool angehängten IAM-Richtlinie eine Richtlinie an eine Amazon Cognito AWS IoT Cognito-Identität anhängen. Um eine AWS IoT Richtlinie anzuhängen, verwenden Sie die [ AttachPolicy](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachPolicy.html)API und erteilen Sie einem einzelnen Benutzer Ihrer Anwendung Berechtigungen. AWS IoT Sie können die AWS IoT Richtlinie verwenden, um spezifische Berechtigungen für bestimmte Kunden und deren Geräte zuzuweisen.

Authentifizierte und nicht authentifizierte Benutzer sind unterschiedliche Identitätstypen. Wenn Sie der Amazon Cognito Identity keine AWS IoT Richtlinie beifügen, schlägt ein authentifizierter Benutzer die Autorisierung fehl AWS IoT und hat keinen Zugriff auf AWS IoT Ressourcen und Aktionen. Weitere Informationen zum Erstellen von Richtlinien für Amazon-Cognito-Identitäten finden Sie unter [Beispiele für Veröffentlichungs-/Abonnement-Richtlinien](pub-sub-policy.md) und [Autorisierung mit Amazon-Cognito-Identitäten](cog-iot-policies.md).

![\[Anwendung, die mit Amazon Cognito Identity auf ein Gerät zugreift.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/device-cognito.png)


# Benutzerspezifische Authentifizierung und Autorisierung
<a name="custom-authentication"></a>

 AWS IoT Core ermöglicht es Ihnen, benutzerdefinierte Autorisierer zu definieren, sodass Sie Ihre eigene Client-Authentifizierung und -Autorisierung verwalten können. Dies ist nützlich, wenn Sie andere Authentifizierungsmechanismen als die verwenden müssen, die von Haus aus unterstützt werden. AWS IoT Core (Weitere Informationen zu den nativ unterstützten Mechanismen finden Sie unter [Client-Authentifizierung](client-authentication.md).)  

 Wenn Sie beispielsweise vorhandene Geräte vor Ort zu migrieren AWS IoT Core und diese Geräte ein benutzerdefiniertes Bearer-Token oder einen MQTT-Benutzernamen und ein Passwort zur Authentifizierung verwenden, können Sie sie zu migrieren, AWS IoT Core ohne ihnen neue Identitäten bereitstellen zu müssen. Sie können die benutzerdefinierte Authentifizierung mit jedem der unterstützten Kommunikationsprotokolle verwenden. AWS IoT Core Weitere Informationen zu von AWS IoT Core unterstützten Protokollen finden Sie unter [Gerätekommunikationsprotokolle](protocols.md). 

**Topics**
+ [

# Grundlegendes zum Workflow für die benutzerdefinierte Authentifizierung
](custom-authorizer.md)
+ [

# Benutzerdefinierte Autorisierer (CLI) erstellen und verwalten
](config-custom-auth.md)
+ [

# Benutzerdefinierte Authentifizierung mit X.509-Client-Zertifikaten
](custom-auth-509cert.md)
+ [

# Mithilfe der benutzerdefinierten Authentifizierung AWS IoT Core wird eine Verbindung hergestellt
](custom-auth.md)
+ [

# Fehlerbehebung für Ihre Genehmiger
](custom-auth-troubleshooting.md)

# Grundlegendes zum Workflow für die benutzerdefinierte Authentifizierung
<a name="custom-authorizer"></a>

Mit der benutzerdefinierten Authentifizierung können Sie festlegen, wie Cliente mithilfe von [Genehmigerressourcen](https://docs.aws.amazon.com/iot/latest/apireference/API_AuthorizerDescription.html) authentifiziert und autorisiert werden.  Jeder Autorisierer enthält einen Verweis auf eine vom Kunden verwaltete Lambda-Funktion, einen optionalen öffentlichen Schlüssel zur Überprüfung der Geräteanmeldedaten und zusätzliche Konfigurationsinformationen. Das folgende Diagramm veranschaulicht den Autorisierungsablauf für die benutzerdefinierte Authentifizierung in. AWS IoT Core

![\[Benutzerdefinierter Autorisierungsworkflow für die benutzerdefinierte Authentifizierung in AWS IoT Core.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/custom-authentication.png)


## AWS IoT Core benutzerdefinierter Authentifizierungs- und Autorisierungs-Workflow
<a name="custom-authentication-workflow"></a>

In der folgenden Liste werden die einzelnen Schritte des benutzerdefinierten Authentifizierungs- und Autorisierungsworkflows erläutert.

1. Ein Gerät stellt über einen der unterstützten Geräte eine Verbindung zum AWS IoT Core Datenendpunkt eines Kunden her[Gerätekommunikationsprotokolle](protocols.md). Das Gerät übergibt Anmeldeinformationen entweder in den Header-Feldern oder Abfrageparametern der Anfrage (für die WebSockets Protokolle HTTP Publish oder MQTT over) oder in das Feld für den Benutzernamen und das Passwort der MQTT CONNECT-Nachricht (für die Protokolle MQTT und MQTT over). WebSockets 

1. AWS IoT Core prüft auf eine von zwei Bedingungen:
   + Die eingehende Anforderung gibt einen Genehmiger an.
   + Für den AWS IoT Core Datenendpunkt, der die Anfrage empfängt, ist ein Standardautorisierer dafür konfiguriert.

   Wenn auf AWS IoT Core eine dieser Arten ein Autorisierer gefunden wird, wird die dem Autorisierer zugeordnete Lambda-Funktion AWS IoT Core ausgelöst.

1.  (Optional) Wenn Sie die Tokensignatur aktiviert haben, AWS IoT Core validiert die Anforderungssignatur mithilfe des im Autorisierer gespeicherten öffentlichen Schlüssels, bevor die Lambda-Funktion ausgelöst wird. Wenn die Validierung fehlschlägt, stoppt AWS IoT Core die Anforderung, ohne die Lambda-Funktion aufzurufen.  

1. Die Lambda-Funktion empfängt die Anmeldeinformationen und Verbindungsmetadaten in der Anforderung und trifft eine Authentifizierungsentscheidung.

1. Die Lambda-Funktion gibt die Ergebnisse der Authentifizierungsentscheidung und ein AWS IoT Core Richtliniendokument zurück, das festlegt, welche Aktionen in der Verbindung zulässig sind. Die Lambda-Funktion gibt auch Informationen zurück, die angeben, wie oft die Anmeldeinformationen in der Anfrage AWS IoT Core erneut validiert werden, indem die Lambda-Funktion aufgerufen wird.

1. AWS IoT Core bewertet die Aktivität auf der Verbindung anhand der Richtlinie, die sie von der Lambda-Funktion erhalten hat.

1. Nachdem die Verbindung hergestellt wurde und Ihr benutzerdefinierter Authorizer Lambda zum ersten Mal aufgerufen wurde, kann der nächste Aufruf bei inaktiven Verbindungen ohne MQTT-Operationen um bis zu 5 Minuten verzögert werden. Danach folgen nachfolgende Aufrufe dem Aktualisierungsintervall in Ihrem benutzerdefinierten Authorizer Lambda. Dieser Ansatz kann übermäßige Aufrufe verhindern, die Ihr Lambda-Parallelitätslimit überschreiten könnten. AWS-Konto

## Überlegungen zur Skalierung
<a name="custom-authentication-scaling"></a>

 Da eine Lambda-Funktion die Authentifizierung und Autorisierung für Ihren Genehmiger abwickelt, unterliegt die Funktion den Lambda-Preis- und Servicebeschränkungen, z. B. der Rate der gleichzeitigen Ausführung. Weitere Informationen zu den Preisen für Lambda finden Sie unter [Lambda-Preise](https://aws.amazon.com/lambda/pricing/). Sie können die Belastung Ihrer Lambda-Funktion verwalten, indem Sie die `refreshAfterInSeconds`- und `disconnectAfterInSeconds`-Parameter in Ihrer Lambda-Funktionsantwort anpassen. Weitere Informationen über den Inhalt Ihrer Lambda-Funktionsantwort finden Sie unter [Definieren Ihrer Lambda-Funktion](custom-auth-lambda.md).

**Anmerkung**  
Wenn Sie die Signierung aktiviert lassen, können Sie verhindern, dass Ihr Lambda übermäßig oft durch unbekannte Clients ausgelöst wird. Bedenken Sie dies, bevor Sie die Signierung in Ihrem Genehmiger deaktivieren.

**Anmerkung**  
Das Timeout-Limit der Lambda-Funktion für den benutzerdefinierten Genehmiger beträgt 5 Sekunden.

# Benutzerdefinierte Autorisierer (CLI) erstellen und verwalten
<a name="config-custom-auth"></a>

AWS IoT Core implementiert benutzerdefinierte Authentifizierungs- und Autorisierungsschemata mithilfe benutzerdefinierter Autorisierer. Ein benutzerdefinierter Autorisierer ist eine AWS IoT Core Ressource, die Ihnen die Flexibilität bietet, Regeln und Richtlinien auf der Grundlage Ihrer spezifischen Anforderungen zu definieren und zu implementieren. Informationen zum Erstellen eines benutzerdefinierten Autorisierers mit step-by-step Anweisungen finden Sie unter [Tutorial: Erstellen eines benutzerdefinierten Autorisierers](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html) für. AWS IoT Core

Jeder Genehmiger umfasst folgende Komponenten: 
+  *Name*: Eine eindeutige benutzerdefinierte Zeichenfolge, in der der Genehmiger identifiziert wird.
+  *ARN der Lambda-Funktion*: Der Amazon-Ressourcenname (ARN) der Lambda-Funktion, die die Autorisierungs- und Authentifizierungslogik implementiert.  
+  *Token-Schlüsselname*: Der Schlüsselname, der verwendet wird, um das Token aus den HTTP-Headern, Abfrageparametern oder dem MQTT-CONNECT-Benutzernamen zu extrahieren, um die Signaturvalidierung durchzuführen. Dieser Wert ist erforderlich, wenn in Ihrem Genehmiger die Signierung aktiviert ist. 
+  *Markierung „Signieren deaktiviert“ (optional)*: Ein boolescher Wert, der angibt, ob die Signaturanforderung für Anmeldeinformationen deaktiviert werden soll. Dies ist nützlich für Szenarien, in denen das Signieren der Anmeldeinformationen keinen Sinn macht, z. B. bei Authentifizierungsschemata, die MQTT-Benutzernamen und -Passwörter verwenden. Der Standardwert ist `false`, also ist das Signieren standardmäßig aktiviert. 
+  *Öffentlicher Schlüssel zur Tokensignierung*: Der öffentliche Schlüssel, den AWS IoT Core zur Validierung der Tokensignatur verwendet. Die Mindestlänge beträgt 2.048 Bit. Dieser Wert ist erforderlich, wenn in Ihrem Genehmiger die Signierung aktiviert ist.  

Lambda berechnet Ihnen die Anzahl der Ausführungen Ihrer Lambda-Funktion und die Dauer der Ausführung des Codes in Ihrer Funktion. Weitere Informationen zu den Preisen für Lambda finden Sie unter [Lambda-Preise](https://aws.amazon.com/lambda/pricing/). Weitere Informationen zum Erstellen von Lambda-Funktionen finden Sie im [Lambda-Entwicklerhandbuch](https://docs.aws.amazon.com/lambda/latest/dg/).

**Anmerkung**  
Wenn Sie die Signierung aktiviert lassen, können Sie verhindern, dass Ihr Lambda übermäßig oft durch unbekannte Clients ausgelöst wird. Bedenken Sie dies, bevor Sie die Signierung in Ihrem Genehmiger deaktivieren.

**Anmerkung**  
Das Timeout-Limit der Lambda-Funktion für den benutzerdefinierten Genehmiger beträgt 5 Sekunden.

**Topics**
+ [

# Definieren Ihrer Lambda-Funktion
](custom-auth-lambda.md)
+ [

# Erstellen eines Genehmigers
](custom-auth-create-authorizer.md)
+ [

# Autorisieren AWS IoT zum Aufrufen Ihrer Lambda-Funktion
](custom-auth-authorize.md)
+ [

# Testen Ihrer Genehmiger
](custom-auth-testing.md)
+ [

# Verwalten von benutzerdefinierten Genehmigern
](custom-auth-manage.md)

# Definieren Ihrer Lambda-Funktion
<a name="custom-auth-lambda"></a>

 Wenn AWS IoT Core Sie Ihren Autorisierer aufrufen, löst er das dem Autorisierer zugeordnete Lambda mit einem Ereignis aus, das das folgende JSON-Objekt enthält. Das JSON-Beispielobjekt enthält alle möglichen Felder. Felder, die für die Verbindungsanforderung nicht relevant sind, sind nicht enthalten.

```
{
    "token" :"aToken",
    "signatureVerified": Boolean, // Indicates whether the device gateway has validated the signature.
    "protocols": ["tls", "http", "mqtt"], // Indicates which protocols to expect for the request.
    "protocolData": {
        "tls" : {
            "serverName": "serverName" // The server name indication (SNI) host_name string.
        },
        "http": {
            "headers": {
                "#{name}": "#{value}"
            },
            "queryString": "?#{name}=#{value}"
        },
        "mqtt": {
            "username": "myUserName",
            "password": "myPassword", // A base64-encoded string.
            "clientId": "myClientId" // Included in the event only when the device sends the value.
        }
    },
    "connectionMetadata": {
        "id": UUID // The connection ID. You can use this for logging.
    },
}
```

 Die Lambda-Funktion sollte diese Informationen verwenden, um die eingehende Verbindung zu authentifizieren und zu entscheiden, welche Aktionen in der Verbindung zulässig sind. Die Funktion sollte eine Antwort senden, die die folgenden Werte enthält. 
+  `isAuthenticated`: Ein boolescher Wert, der angibt, ob die Anforderung authentifiziert wurde.
+  `principalId`: Eine alphanumerische Zeichenfolge, die als Kennung für das Token dient, das von der benutzerdefinierten Autorisierungsanforderung gesendet wurde. Der Wert muss eine alphanumerische Zeichenfolge mit mindestens einem und nicht mehr als 128 Zeichen sein und dem folgenden regulären Ausdrucksmuster (Regex) entsprechen: `([a-zA-Z0-9]){1,128}`. Sonderzeichen, die nicht alphanumerisch sind, dürfen nicht zusammen mit dem in verwendet werden. `principalId` AWS IoT Core Informationen darüber, ob nicht-alphanumerische Sonderzeichen für die zulässig sind, finden Sie in der Dokumentation zu anderen AWS Diensten. `principalId`
+  `policyDocuments`: Eine Liste von AWS IoT Core Richtliniendokumenten im JSON-Format Weitere Informationen zum Erstellen von Richtlinien finden Sie unter. AWS IoT Core [AWS IoT Core Richtlinien](iot-policies.md) Die maximale Anzahl von Richtliniendokumenten ist 10. Jedes Richtliniendokument darf maximal 2048 Zeichen enthalten.
+  `disconnectAfterInSeconds`: Eine Ganzzahl, die die maximale Dauer der Verbindung zum AWS IoT Core -Gateway angibt (in Sekunden). Der Mindestwert ist 300 Sekunden und der Höchstwert 86 400 Sekunden. Der Standardwert ist 86.400.
**Anmerkung**  
Der Wert von `disconnectAfterInSeconds` (von der Lambda-Funktion zurückgegeben) wird festgelegt, wenn die Verbindung hergestellt wird. Dieser Wert kann bei nachfolgenden Lambda-Aufrufen zur Richtlinienaktualisierung nicht geändert werden.
+  `refreshAfterInSeconds`: Eine Ganzzahl, die das Intervall zwischen Richtlinienaktualisierungen angibt. Wenn dieses Intervall abläuft, ruft AWS IoT Core die Lambda-Funktion auf, um Richtlinienaktualisierungen zu ermöglichen. Der Mindestwert ist 300 Sekunden und der Höchstwert 86 400 Sekunden. 

  Das folgende JSON-Objekt enthält ein Beispiel für eine Antwort, die Ihre Lambda-Funktion senden kann. 

 **\$1 "isAuthenticated":true, //A Boolean that determines whether client can connect. "principalId": "xxxxxxxx",  //A string that identifies the connection in logs. "disconnectAfterInSeconds": 86400,  "refreshAfterInSeconds": 300,   "policyDocuments": [       \$1         "Version": "2012-10-17",         "Statement": [            \$1               "Action": "iot:Publish",               "Effect": "Allow",               "Resource": "arn:aws:iot:us-east-1:<your\$1aws\$1account\$1id>:topic/customauthtesting"             \$1          ]        \$1     ] \$1**

 Der `policyDocument` Wert muss ein AWS IoT Core gültiges Richtliniendokument enthalten. Weitere Informationen zu AWS IoT Core Richtlinien finden Sie unter[AWS IoT Core Richtlinien](iot-policies.md). In MQTT über TLS und MQTT über WebSockets Verbindungen wird diese Richtlinie für das im Feldwert angegebene Intervall AWS IoT Core zwischengespeichert. `refreshAfterInSeconds` Bei HTTP-Verbindungen wird die Lambda-Funktion für jede Autorisierungsanforderung aufgerufen, es sei denn, Ihr Gerät verwendet persistente HTTP-Verbindungen (auch HTTP-Keep-Alive oder HTTP-Verbindungswiederverwendung genannt). Sie können bei der Konfiguration des Genehmigers wählen, ob Sie das Caching aktivieren möchten. AWS IoT Core Autorisiert während dieses Intervalls Aktionen in einer bestehenden Verbindung gegen diese zwischengespeicherte Richtlinie, ohne dass Ihre Lambda-Funktion erneut ausgelöst wird. Wenn bei der benutzerdefinierten Authentifizierung Fehler auftreten, AWS IoT Core wird die Verbindung beendet. AWS IoT Core beendet die Verbindung auch, wenn sie länger als der im Parameter angegebene Wert geöffnet war. `disconnectAfterInSeconds` 

 Im Folgenden finden JavaScript Sie eine Lambda-Beispielfunktion von Node.js, die in der MQTT Connect-Nachricht nach einem Passwort mit dem Wert von sucht `test` und eine Richtlinie zurückgibt, die die Erlaubnis erteilt, eine Verbindung AWS IoT Core mit einem Client herzustellen `myClientName` und zu einem Thema zu veröffentlichen, das denselben Clientnamen enthält. Wenn es das erwartete Passwort nicht findet, gibt es eine Richtlinie zurück, die diese beiden Aktionen verweigert. 

```
// A simple Lambda function for an authorizer. It demonstrates 
// how to parse an MQTT password and generate a response.

exports.handler = function(event, context, callback) { 
    var uname = event.protocolData.mqtt.username;
    var pwd = event.protocolData.mqtt.password;
    var buff = new Buffer(pwd, 'base64');
    var passwd = buff.toString('ascii');
    switch (passwd) { 
        case 'test': 
            callback(null, generateAuthResponse(passwd, 'Allow')); 
            break;
        default: 
            callback(null, generateAuthResponse(passwd, 'Deny'));  
    }
};

// Helper function to generate the authorization response.
var generateAuthResponse = function(token, effect) { 
    var authResponse = {}; 
    authResponse.isAuthenticated = true; 
    authResponse.principalId = 'TEST123'; 
    
    var policyDocument = {}; 
    policyDocument.Version = '2012-10-17';		 	 	 
    policyDocument.Statement = []; 
    var publishStatement = {}; 
    var connectStatement = {};
    connectStatement.Action = ["iot:Connect"];
    connectStatement.Effect = effect;
    connectStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:client/myClientName"];
    publishStatement.Action = ["iot:Publish"]; 
    publishStatement.Effect = effect; 
    publishStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"]; 
    policyDocument.Statement[0] = connectStatement;
    policyDocument.Statement[1] = publishStatement; 
    authResponse.policyDocuments = [policyDocument]; 
    authResponse.disconnectAfterInSeconds = 3600; 
    authResponse.refreshAfterInSeconds = 300;
    
    return authResponse; 
}
```

 Die vorhergehende Lambda-Funktion gibt das folgende JSON zurück, wenn sie das erwartete Passwort von `test` in der MQTT-Connect-Nachricht empfängt. Die Werte der `password`- und `principalId`-Eigenschaften sind die Werte aus der MQTT-Connect-Nachricht.

```
{
  "password": "password",
  "isAuthenticated": true,
  "principalId": "principalId",
  "policyDocuments": [
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": "iot:Connect",
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Action": "iot:Publish",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Subscribe",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topicfilter/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Receive",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        }
      ]
    }
  ],
  "disconnectAfterInSeconds": 3600,
  "refreshAfterInSeconds": 300
}
```

# Erstellen eines Genehmigers
<a name="custom-auth-create-authorizer"></a>

 [Sie können mithilfe der API einen Autorisierer erstellen. CreateAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateAuthorizer.html) Das folgende Beispiel beschreibt den Befehl. 

```
aws iot create-authorizer
--authorizer-name MyAuthorizer
--authorizer-function-arn arn:aws:lambda:us-west-2:<account_id>:function:MyAuthorizerFunction  //The ARN of the Lambda function.
[--token-key-name MyAuthorizerToken //The key used to extract the token from headers.
[--token-signing-public-keys FirstKey=
 "-----BEGIN PUBLIC KEY-----
  [...insert your public key here...] 
  -----END PUBLIC KEY-----"
[--status ACTIVE]
[--tags <value>]
[--signing-disabled | --no-signing-disabled]
```

Sie können den `signing-disabled`-Parameter verwenden, um die Signaturvalidierung für jeden Aufruf Ihres Genehmigers zu deaktivieren. Es wird ausdrücklich empfohlen, dass die Signierung nur wenn unbedingt notwendig zu deaktivieren. Die Signaturvalidierung schützt Sie vor übermäßigen Aufrufen Ihrer Lambda-Funktion von unbekannten Geräten. Sie können den `signing-disabled`-Status eines Genehmigers nicht mehr ändern, nachdem Sie ihn erstellt haben. Zum Ändern dieses Verhaltens müssen Sie einen anderen benutzerdefinierten Genehmiger mit einem anderen Wert für den `signing-disabled`-Parameter erstellen. 

Die Werte für die `tokenKeyName`- und `tokenSigningPublicKeys`-Parameter sind optional, wenn Sie das Signieren deaktiviert haben. Sie sind jedoch erforderlich, wenn das Signieren aktiviert ist. 

Nachdem Sie Ihre Lambda-Funktion und den benutzerdefinierten Autorisierer erstellt haben, müssen Sie dem AWS IoT Core Dienst ausdrücklich die Berechtigung erteilen, die Funktion in Ihrem Namen aufzurufen. Sie können dies mit dem folgenden Befehl tun. 

**Anmerkung**  
Der Standard-IoT-Endpunkt unterstützt möglicherweise nicht die Verwendung von benutzerdefinierten Autorisierern mit Lambda-Funktionen. Stattdessen können Sie Domänenkonfigurationen verwenden, um einen neuen Endpunkt zu definieren und diesen Endpunkt dann für den benutzerdefinierten Autorisierer anzugeben.

```
aws lambda add-permission --function-name <lambda_function_name>
--principal iot.amazonaws.com --source-arn <authorizer_arn>
--statement-id Id-123 --action "lambda:InvokeFunction"
```

# Autorisieren AWS IoT zum Aufrufen Ihrer Lambda-Funktion
<a name="custom-auth-authorize"></a>

In diesem Abschnitt erteilen Sie der benutzerdefinierten Autorisierungsressource, die Sie gerade erstellt haben, die Erlaubnis, die Lambda-Funktion auszuführen. Um die Berechtigung zu erteilen, können Sie den CLI-Befehl [add-permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html) verwenden.

**Erteilen Sie Ihrer Lambda-Funktion die Erlaubnis mit dem AWS CLI**

1. Geben Sie nach der Eingabe Ihrer Werte den folgenden Befehl ein. Beachten Sie, dass der Wert `statement-id` eindeutig sein muss. `Id-1234`Ersetzen Sie es durch den exakten Wert, den Sie haben, andernfalls wird möglicherweise eine `ResourceConflictException` Fehlermeldung angezeigt.

   ```
   aws lambda add-permission  \
   --function-name "custom-auth-function" \
   --principal "iot.amazonaws.com" \
   --action "lambda:InvokeFunction" \
   --statement-id "Id-1234" \
   --source-arn authorizerArn
   ```

1. Wenn der Befehl erfolgreich ist, gibt er eine Berechtigungsanweisung zurück, wie in diesem Beispiel. Sie können mit dem nächsten Abschnitt fortfahren, um den benutzerdefinierten Autorisierer zu testen.

   ```
   {
       "Statement": "{\"Sid\":\"Id-1234\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\"}}}"
   }
   ```

   Wenn der Befehl nicht erfolgreich ist, wird ein Fehler zurückgegeben, wie in diesem Beispiel. Sie müssen den Fehler überprüfen und korrigieren, bevor Sie fortfahren können.

   ```
   An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::57EXAMPLE833:user/EXAMPLE-1 is not authorized to perform: lambda:AddPer
   mission on resource: arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function
   ```

# Testen Ihrer Genehmiger
<a name="custom-auth-testing"></a>

 Sie können die [TestInvokeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_TestInvokeAuthorizer.html)API verwenden, um den Aufruf und die Rückgabewerte Ihres Autorisierers zu testen. Mit dieser API können Sie Protokollmetadaten angeben und die Signaturvalidierung in Ihrem Authorizer testen.

Die folgenden Tabs zeigen, wie Sie den verwenden können, AWS CLI um Ihren Authorizer zu testen.

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER \
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER ^
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER `
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------

Der Wert des `token-signature`-Parameters ist das signierte Token. Weitere Informationen zum Abrufen dieses Werts finden Sie unter [Signieren des Tokens](custom-auth.md#custom-auth-token-signature).

Wenn Ihr Genehmiger einen Benutzernamen und ein Passwort verwendet, können Sie diese Informationen mithilfe des `--mqtt-context`-Parameters weitergeben. Die folgenden Registerkarten zeigen, wie Sie mithilfe der `TestInvokeAuthorizer`-API ein JSON-Objekt, das einen Benutzernamen, ein Passwort und einen Clientnamen enthält, an Ihren benutzerdefinierten Genehmiger senden.

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  \
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  ^
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  `
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------

Das Passwort muss base64-kodiert sein. Das folgende Beispiel zeigt, wie Sie ein Passwort in einer Unix-ähnlichen Umgebung kodieren.

```
echo -n PASSWORD | base64
```

# Verwalten von benutzerdefinierten Genehmigern
<a name="custom-auth-manage"></a>

 Sie können Ihre Autorisierer wie folgt verwalten. APIs 
+ [ListAuthorizers](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuthorizers.html): Zeigt alle Autorisierer in Ihrem Konto an.
+  [DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html): Zeigt die Eigenschaften des angegebenen Autorisierers an. Zu diesen Werten gehören das Erstellungsdatum, das Datum der letzten Änderung und andere Attribute.
+ [SetDefaultAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_SetDefaultAuthorizer.html): Gibt den Standardautorisierer für Ihre AWS IoT Core Datenendpunkte an. AWS IoT Core verwendet diesen Autorisierer, wenn ein Gerät keine AWS IoT Core Anmeldeinformationen weitergibt und keinen Autorisierer angibt. Weitere Informationen zur Verwendung von AWS IoT Core Anmeldeinformationen finden Sie unter. [Client-Authentifizierung](client-authentication.md)
+ [UpdateAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateAuthorizer.html): Ändert den Status, den Namen des Token-Schlüssels oder die öffentlichen Schlüssel für den angegebenen Autorisierer.
+  [DeleteAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteAuthorizer.html): Löscht den angegebenen Autorisierer. 

**Anmerkung**  
 Sie können die Signaturanforderungen eines Genehmigers nicht aktualisieren. Das bedeutet, dass Sie das Signieren in einem vorhandenen Genehmiger, der dies fordert, nicht deaktivieren können. Sie können auch nicht die Anmeldung bei einem vorhandenen Genehmiger verlangen, der dies nicht fordert. 

# Benutzerdefinierte Authentifizierung mit X.509-Client-Zertifikaten
<a name="custom-auth-509cert"></a>

Wenn Sie Geräte mit verbinden AWS IoT Core, stehen Ihnen mehrere [Authentifizierungstypen](protocols.md#connection-protocol-auth-mode) zur Verfügung. Sie können [X.509-Clientzertifikate](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) verwenden, mit denen Sie Client- und Geräteverbindungen authentifizieren können, oder [benutzerdefinierte Autorisierer definieren, um Ihre eigene Client-Authentifizierungs- und Autorisierungslogik](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html) zu verwalten. In diesem Thema wird beschrieben, wie Sie die benutzerdefinierte Authentifizierung mit X.509-Clientzertifikaten verwenden.

Die Verwendung einer benutzerdefinierten Authentifizierung mit X.509-Zertifikaten kann hilfreich sein, wenn Sie Ihre Geräte bereits mit X.509-Zertifikaten authentifiziert haben und zusätzliche Validierungen und benutzerdefinierte Autorisierungen durchführen möchten. Wenn Sie beispielsweise die Daten Ihrer Geräte, wie z. B. deren Seriennummern, im X.509-Client-Zertifikat speichern, können Sie nach der AWS IoT Core Authentifizierung des X.509-Client-Zertifikats einen benutzerdefinierten Autorisierer verwenden, um bestimmte Geräte anhand der im Feld des Zertifikats gespeicherten Informationen zu identifizieren. CommonName Die Verwendung einer benutzerdefinierten Authentifizierung mit X.509-Zertifikaten kann Ihr Gerätesicherheitsmanagement beim Verbinden von Geräten verbessern AWS IoT Core und bietet mehr Flexibilität bei der Verwaltung der Authentifizierungs- und Autorisierungslogik. AWS IoT Core [unterstützt die benutzerdefinierte Authentifizierung mit X.509-Zertifikaten unter Verwendung des X.509-Zertifikats und des benutzerdefinierten Autorisierungstyps, der sowohl mit dem [MQTT-Protokoll als auch mit dem HTTPS-Protokoll](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html) funktioniert.](https://docs.aws.amazon.com//iot/latest/developerguide/http.html) [Weitere Informationen zu den Authentifizierungstypen und Anwendungsprotokollen, die von AWS IoT Core Geräteendpunkten unterstützt werden, finden Sie unter Gerätekommunikationsprotokolle.](https://docs.aws.amazon.com//iot/latest/developerguide/protocols.html)

**Anmerkung**  
Die benutzerdefinierte Authentifizierung mit X.509-Clientzertifikaten wird in den AWS GovCloud (US) Regionen nicht unterstützt.

**Wichtig**  
Sie müssen einen Endpunkt verwenden, der mithilfe von [Domänenkonfigurationen](iot-custom-endpoints-configurable.md) erstellt wurde. Darüber hinaus müssen Clients die Erweiterung [Server Name Indication (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) angeben, wenn sie eine Verbindung herstellen AWS IoT Core.

**Topics**
+ [

## Schritt 1: Registrieren Sie Ihre X.509-Clientzertifikate bei AWS IoT Core
](#custom-auth-509cert-client)
+ [

## Schritt 2: Erstellen einer Lambda-Funktion
](#custom-auth-509cert-lambda)
+ [

## Schritt 3: Erstellen Sie einen benutzerdefinierten Autorisierer
](#custom-auth-509cert-authorizer)
+ [

## Schritt 4: Legen Sie den Authentifizierungstyp und das Anwendungsprotokoll in einer Domänenkonfiguration fest
](#custom-auth-509cert-domainconfig)

## Schritt 1: Registrieren Sie Ihre X.509-Clientzertifikate bei AWS IoT Core
<a name="custom-auth-509cert-client"></a>

Falls Sie dies noch nicht getan haben, registrieren und aktivieren Sie Ihre [X.509-Client-Zertifikate](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) mit. 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 [Kundenzertifikate direkt mit erstellen AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Diese Client-Zertifikate werden automatisch bei registriert AWS IoT Core.

1. Wenn Sie [Ihre eigenen Client-Zertifikate erstellen](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), folgen Sie [diesen Anweisungen, um sie zu registrieren AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. Folgen Sie [diesen Anweisungen](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html), um Ihre Client-Zertifikate zu aktivieren.

## Schritt 2: Erstellen einer Lambda-Funktion
<a name="custom-auth-509cert-lambda"></a>

AWS IoT Core verwendet benutzerdefinierte Autorisierer, um benutzerdefinierte Authentifizierungs- und Autorisierungsschemata zu implementieren. Ein benutzerdefinierter Autorisierer ist mit einer Lambda-Funktion verknüpft, die bestimmt, ob ein Gerät authentifiziert ist und welche Operationen das Gerät ausführen darf. Wenn ein Gerät eine Verbindung herstellt AWS IoT Core, AWS IoT Core ruft es die Autorisierungsdetails ab, einschließlich des Autorisierernamens und der zugehörigen Lambda-Funktion, und ruft die Lambda-Funktion auf. Die Lambda-Funktion empfängt ein Ereignis, das ein JSON-Objekt mit den X.509-Client-Zertifikatsdaten des Geräts enthält. Ihre Lambda-Funktion verwendet dieses Event-JSON-Objekt, um die Authentifizierungsanfrage auszuwerten, die zu ergreifenden Aktionen zu entscheiden und eine Antwort zurückzusenden.

### Beispiel für ein Lambda-Funktionsereignis
<a name="custom-auth-509cert-event"></a>

Das folgende JSON-Beispielobjekt enthält alle möglichen Felder, die eingeschlossen werden können. Das eigentliche JSON-Objekt wird nur Felder enthalten, die für die spezifische Verbindungsanforderung relevant sind.

```
{
	"token": "aToken",
	"signatureVerified": true,
	"protocols": [
		"tls",
		"mqtt"
	],
	"protocolData": {
		"tls": {
			"serverName": "serverName",
			"x509CertificatePem": "x509CertificatePem",
			"principalId": "principalId"
		},
		"mqtt": {
			"clientId": "myClientId",
                     "username": "myUserName",
                     "password": "myPassword"
		}
	},
	"connectionMetadata": {
		"id": "UUID"
	}
}
```

`signatureVerified`  
Ein boolescher Wert, der angibt, ob die im Authorizer konfigurierte Token-Signatur verifiziert wurde oder nicht, bevor die Lambda-Funktion des Autorisierers aufgerufen wird. Wenn der Autorisierer so konfiguriert ist, dass er die Tokensignatur deaktiviert, ist dieses Feld falsch. 

`protocols`  
Ein Array, das die Protokolle enthält, die für die Anfrage zu erwarten sind.

`protocolData`  
Ein Objekt, das Informationen zu den in der Verbindung verwendeten Protokollen enthält. Es enthält protokollspezifische Details, die für Authentifizierung, Autorisierung und mehr nützlich sein können.  
`tls`- Dieses Objekt enthält Informationen zum TLS-Protokoll (Transport Layer Security).   
+ `serverName`- Die Hostnamenzeichenfolge [(Server Name Indication, SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). AWS IoT Core erfordert, dass Geräte die [SNI-Erweiterung](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) an das Transport Layer Security (TLS) -Protokoll senden und die vollständige Endpunktadresse vor Ort angeben. `host_name`
+ `x509CertificatePem`- Das X.509-Zertifikat im PEM-Format, das für die Client-Authentifizierung in der TLS-Verbindung verwendet wird.
+ `principalId`- Die dem Client in der TLS-Verbindung zugeordnete Prinzipal-ID.
`mqtt`- Dieses Objekt enthält Informationen zum MQTT-Protokoll.  
+ `clientId`- Eine Zeichenfolge muss nur für den Fall angegeben werden, dass das Gerät diesen Wert sendet.
+ `username`- Der im MQTT Connect-Paket angegebene Benutzername.
+ `password`- Das im MQTT Connect-Paket angegebene Passwort.

`connectionMetadata`  
Metadaten der Verbindung.  
`id`- Die Verbindungs-ID, die Sie für die Protokollierung und Fehlerbehebung verwenden können.

**Anmerkung**  
In diesem Fall `principalId` handelt es sich um das JSON-Objekt `x509CertificatePem` und um zwei neue Felder in der Anfrage. Der Wert von `principalId` ist derselbe wie der Wert von`certificateId`. Weitere Informationen finden Sie unter [Zertifikat](https://docs.aws.amazon.com//iot/latest/apireference/API_Certificate.html).

### Beispiel für eine Antwort auf eine Lambda-Funktion
<a name="custom-auth-509cert-response"></a>

Die Lambda-Funktion sollte Informationen aus dem JSON-Ereignisobjekt verwenden, um die eingehende Verbindung zu authentifizieren und zu entscheiden, welche Aktionen in der Verbindung zulässig sind.

Das folgende JSON-Objekt enthält eine Beispielantwort, die Ihre Lambda-Funktion senden kann.

```
{
	"isAuthenticated": true,
	"principalId": "xxxxxxxx",
	"disconnectAfterInSeconds": 86400,
	"refreshAfterInSeconds": 300,
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Effect": "Allow",
					"Action": "iot:Publish",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/customauthtesting"
				}
			]
		}
	]
}
```

In diesem Beispiel sollte diese Funktion eine Antwort senden, die die folgenden Werte enthält.

`isAuthenticated`  
Ein boolescher Wert, der angibt, ob die Anfrage authentifiziert ist.

`principalId`  
Eine alphanumerische Zeichenfolge, die als Kennung für das von der benutzerdefinierten Autorisierungsanfrage gesendete Token dient. Der Wert muss eine alphanumerische Zeichenfolge mit mindestens einem und nicht mehr als 128 Zeichen sein. Es identifiziert die Verbindung in Protokollen. Der Wert von `principalId` muss mit dem Wert von `principalId` im Event-JSON-Objekt identisch sein (d. h. certificateId des X.509-Zertifikats).

`policyDocuments`  
Eine Liste von Richtliniendokumenten im AWS IoT Core JSON-Format. Der Wert ist optional und unterstützt [Ding-Richtlinienvariablen und [Zertifikatsrichtlinienvariablen](https://docs.aws.amazon.com//iot/latest/developerguide/cert-policy-variables.html)](https://docs.aws.amazon.com//iot/latest/developerguide/thing-policy-variables.html). Die maximale Anzahl von Richtliniendokumenten ist 10. Jedes Richtliniendokument darf maximal 2048 Zeichen enthalten. Wenn Sie mehrere Richtlinien an Ihr Client-Zertifikat und die Lambda-Funktion angehängt haben, ist die Berechtigung eine Sammlung aller Richtlinien. Weitere Informationen zum Erstellen von AWS IoT Core Richtlinien finden Sie unter [Richtlinien](https://docs.aws.amazon.com//iot/latest/developerguide/iot-policies.html).

`disconnectAfterInSeconds`  
Eine Ganzzahl, die die maximale Dauer (in Sekunden) der Verbindung zum AWS IoT Core Gateway angibt. Der Mindestwert ist 300 Sekunden und der Höchstwert ist 86.400 Sekunden. `disconnectAfterInSeconds`gilt für die gesamte Lebensdauer einer Verbindung und wird bei aufeinanderfolgenden Richtlinienaktualisierungen nicht aktualisiert.

`refreshAfterInSeconds`  
Eine Ganzzahl, die das Intervall zwischen Richtlinienaktualisierungen angibt. Wenn dieses Intervall abgelaufen ist, AWS IoT Core ruft die Lambda-Funktion auf, um Richtlinienaktualisierungen zu ermöglichen. Der Mindestwert ist 300 Sekunden und der Höchstwert 86 400 Sekunden.

### Beispiel-Lambda-Funktion
<a name="custom-auth-509cert-js-example"></a>

Im Folgenden finden Sie ein Beispiel für eine Lambda-Funktion von Node.js. Die Funktion untersucht das X.509-Zertifikat des Clients und extrahiert relevante Informationen wie die Seriennummer, den Fingerabdruck und den Namen des Antragstellers. Wenn die extrahierten Informationen den erwarteten Werten entsprechen, wird dem Client der Zugriff auf die Verbindung gewährt. Dieser Mechanismus stellt sicher, dass nur autorisierte Clients mit gültigen Zertifikaten eine Verbindung herstellen können.

```
const crypto = require('crypto');

exports.handler = async (event) => {
    
    // Extract the certificate PEM from the event
    const certPem = event.protocolData.tls.x509CertificatePem;
    
    // Parse the certificate using Node's crypto module
    const cert = new crypto.X509Certificate(certPem);
    
    var effect = "Deny";
    // Allow permissions only for a particular certificate serial, fingerprint, and subject
    if (cert.serialNumber === "7F8D2E4B9C1A5036DE8F7C4B2A91E5D80463BC9A1257" // This is a random serial
       && cert.fingerprint === "F2:9A:C4:1D:B5:E7:08:3F:6B:D0:4E:92:A7:C1:5B:8D:16:0F:E3:7A" // This is a random fingerprint
       && cert.subject === "allow.example.com") {
      effect = "Allow";
    }
    
    return generateAuthResponse(event.protocolData.tls.principalId, effect);
};


// Helper function to generate the authorization response.
function generateAuthResponse(principalId, effect) {
    const authResponse = {
        isAuthenticated: true,
        principalId,
        disconnectAfterInSeconds: 3600,
        refreshAfterInSeconds: 300,
        policyDocuments: [
          {
            Version: "2012-10-17",		 	 	 
            Statement: [
              {
                Action: ["iot:Connect"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:client/myClientName"
                ]
              },
              {
                Action: ["iot:Publish"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Subscribe"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Receive"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              }
            ]
          }
        ]
      };

  return authResponse;
}
```

Die vorhergehende Lambda-Funktion gibt das folgende JSON zurück, wenn sie ein Zertifikat mit der erwarteten Seriennummer, dem Fingerabdruck und dem Betreff empfängt. Der Wert von ist `x509CertificatePem` das im TLS-Handshake bereitgestellte Client-Zertifikat. Weitere Informationen finden Sie unter [Definieren Ihrer Lambda-Funktion](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html#custom-auth-lambda).

```
{
	"isAuthenticated": true,
	"principalId": "principalId in the event JSON object",
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Action": "iot:Connect",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:client/myClientName"
				},
				{
					"Action": "iot:Publish",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				},
				{
					"Action": "iot:Subscribe",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
				},
				{
					"Action": "iot:Receive",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				}
			]
		}
	],
	"disconnectAfterInSeconds": 3600,
	"refreshAfterInSeconds": 300
}
```

## Schritt 3: Erstellen Sie einen benutzerdefinierten Autorisierer
<a name="custom-auth-509cert-authorizer"></a>

Nachdem [Sie die Lambda-Funktion definiert haben](#custom-auth-509cert-lambda), erstellen Sie einen benutzerdefinierten Authorizer, um Ihre eigene Client-Authentifizierungs- und Autorisierungslogik zu verwalten. Sie können den detaillierten Anweisungen in [Schritt 3: Erstellen einer Kundenautorisierungsressource und deren Autorisierung](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html#custom-auth-tutorial-authorizer) folgen. Weitere Informationen finden Sie unter [Einen Autorisierer erstellen](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html). 

Bei der Erstellung des benutzerdefinierten Autorisierers müssen Sie die AWS IoT Erlaubnis erteilen, die Lambda-Funktion aufzurufen, nachdem sie erstellt wurde. Eine ausführliche Anleitung finden Sie unter [Autorisieren AWS IoT zum Aufrufen Ihrer Lambda-Funktion](custom-auth-authorize.md).

## Schritt 4: Legen Sie den Authentifizierungstyp und das Anwendungsprotokoll in einer Domänenkonfiguration fest
<a name="custom-auth-509cert-domainconfig"></a>

Um Geräte mithilfe einer benutzerdefinierten Authentifizierung mit X.509-Clientzertifikaten zu authentifizieren, müssen Sie den Authentifizierungstyp und das Anwendungsprotokoll in einer Domänenkonfiguration festlegen und die SNI-Erweiterung senden. Der Wert von `authenticationType` muss sein`CUSTOM_AUTH_X509`, und der Wert von `applicationProtocol` kann entweder oder sein. `SECURE_MQTT` `HTTPS`

### Legen Sie den Authentifizierungstyp und das Anwendungsprotokoll in der Domänenkonfiguration (CLI) fest
<a name="custom-auth-509cert-cli"></a>

Wenn Sie keine Domänenkonfiguration haben, verwenden Sie den [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html)Befehl, um eine zu erstellen. Der Wert von `authenticationType` muss sein`CUSTOM_AUTH_X509`, und der Wert von `applicationProtocol` kann entweder `SECURE_MQTT` oder sein`HTTPS`.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \ 
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

Wenn Sie bereits über eine Domänenkonfiguration verfügen, verwenden Sie bei `applicationProtocol` Bedarf den [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html)Befehl update `authenticationType` und. Beachten Sie, dass Sie den Authentifizierungstyp oder das Authentifizierungsprotokoll auf dem Standardendpunkt (`iot:Data-ATS`) nicht ändern können.

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

`domain-configuration-name`  
Der Name der Domänenkonfiguration.

`authentication-type`  
Der Authentifizierungstyp der Domänenkonfiguration. Weitere Informationen finden Sie unter [Auswahl eines Authentifizierungstyps](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Das Anwendungsprotokoll, mit dem Geräte kommunizieren AWS IoT Core. Weitere Informationen finden Sie unter [Auswahl eines Anwendungsprotokolls](protocols.md#protocol-selection).

`--authorizer-config`  
Ein Objekt, das die Autorisierungskonfiguration in einer Domänenkonfiguration angibt.

`defaultAuthorizerName`  
Der Name des Autorisierers für eine Domänenkonfiguration.

Weitere Informationen finden Sie unter [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)und in [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)der *AWS IoT API-Referenz.* Weitere Informationen zur Domänenkonfiguration finden Sie unter [Domänenkonfigurationen](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Mithilfe der benutzerdefinierten Authentifizierung AWS IoT Core wird eine Verbindung hergestellt
<a name="custom-auth"></a>

 Geräte können AWS IoT Core mithilfe der benutzerdefinierten Authentifizierung mit jedem Protokoll, das Geräte-Messaging AWS IoT Core unterstützt, eine Verbindung herstellen. Weitere Informationen zu unterstützten Kommunikationsprotokollen finden Sie unter [Gerätekommunikationsprotokolle](protocols.md).  Die Verbindungsdaten, die Sie an die Lambda-Funktion Ihres Genehmigers übergeben, hängen vom verwendeten Protokoll ab. Weitere Informationen zum Erstellen der Lambda-Funktion Ihres Genehmigers finden Sie unter [Definieren Ihrer Lambda-Funktion](custom-auth-lambda.md). In den folgenden Abschnitten wird erläutert, wie Sie eine Verbindung zur Authentifizierung mit jedem unterstützten Protokoll herstellen.

## HTTPS
<a name="custom-auth-http"></a>

Geräte, an die Daten AWS IoT Core mithilfe der [HTTP Publish API](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_Publish.html) gesendet werden, können Anmeldeinformationen entweder über Anforderungsheader oder Abfrageparameter in ihren HTTP-POST-Anfragen übergeben. Geräte können mithilfe des Header- oder Abfrageparameters `x-amz-customauthorizer-name` einen aufzurufenden Genehmiger angeben. Wenn Sie die Tokensignatur in Ihrem Genehmiger aktiviert haben, müssen Sie den `token-key-name` und die `x-amz-customauthorizer-signature` entweder in den Anforderungsheadern oder Abfrageparametern übergeben. Beachten Sie, dass der `token-signature` Wert URL-codiert sein muss, wenn er vom Browser JavaScript aus verwendet wird.

**Anmerkung**  
Der Kundengenehmiger für das HTTPS-Protokoll unterstützt nur Veröffentlichungsvorgänge. Weitere Informationen über das HTTP-Protokoll finden Sie unter [Gerätekommunikationsprotokolle](protocols.md).

Die folgenden Beispielanforderungen zeigen, wie Sie diese Parameter sowohl in Anforderungsheadern als auch in Abfrageparametern übergeben. 

```
//Passing credentials via headers
POST /topics/topic?qos=qos HTTP/1.1
Host: your-endpoint 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
x-amz-customauthorizer-name: authorizer-name

//Passing credentials via query parameters
POST /topics/topic?qos=qos&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value HTTP/1.1
```

## MQTT
<a name="custom-auth-mqtt"></a>

 Geräte, die über eine MQTT-Verbindung eine Verbindung herstellen, können Anmeldeinformationen über die `password` Felder `username` und AWS IoT Core von MQTT-Nachrichten weiterleiten. Der Wert `username` kann optional auch eine Abfragezeichenfolge enthalten, die zusätzliche Werte (einschließlich eines Tokens, einer Signatur und eines Genehmigernamens) an Ihren Genehmiger übergibt. Sie können diese Abfragezeichenfolge verwenden, wenn Sie anstelle der Werte `username` und `password` ein tokenbasiertes Authentifizierungsschema verwenden möchten.  

**Anmerkung**  
 Die Daten im Passwortfeld sind Base64-codiert von. AWS IoT Core Ihre Lambda-Funktion muss sie dekodieren. 

 Das folgende Beispiel enthält eine `username`-Zeichenfolge mit zusätzlichen Parametern, die ein Token und eine Signatur angeben.  

```
username?x-amz-customauthorizer-name=authorizer-name&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value
```

Um einen Authorizer aufzurufen, müssen Geräte, die über MQTT und benutzerdefinierte Authentifizierung eine Verbindung herstellen, eine Verbindung über Port 443 herstellen. AWS IoT Core Sie müssen außerdem die TLS-Erweiterung Application Layer Protocol Negotiation (ALPN) mit dem Wert `mqtt` und die Erweiterung Server Name Indication (SNI) mit dem Hostnamen ihres Datenendpunkts übergeben. AWS IoT Core Der Wert `x-amz-customauthorizer-signature` sollte URL-kodiert sein, um Fehler zu vermeiden. Wir empfehlen außerdem dringend, dass die Werte `x-amz-customauthorizer-name` und `token-key-name` URL-kodiert sind. Weitere Informationen zu diesen Werten finden Sie unter [Gerätekommunikationsprotokolle](protocols.md). Die V2 [AWS IoT Geräte SDKs - SDKs, Mobil- und AWS IoT Geräteclient](iot-sdks.md) kann diese beiden Erweiterungen konfigurieren. 

## MQTT über WebSockets
<a name="custom-auth-websockets"></a>

 Geräte, die AWS IoT Core über MQTT-Over eine Verbindung herstellen, WebSockets können Anmeldeinformationen auf eine der beiden folgenden Arten weitergeben. 
+ Über Anforderungsheader oder Abfrageparameter in der HTTP-UPGRADE-Anfrage, um die WebSockets Verbindung herzustellen.
+ Über die Felder `username` und `password` in der MQTT-CONNECT-Nachricht.

 Wenn Sie Anmeldeinformationen über die MQTT-Connect-Nachricht weitergeben, sind die TLS-Erweiterungen ALPN und SNI erforderlich. Weitere Informationen zu diesen Erweiterungen finden Sie unter [MQTT](#custom-auth-mqtt). Das folgende Beispiel zeigt, wie Sie Anmeldeinformationen über die HTTP-Upgrade-Anforderung übergeben. 

```
GET /mqtt HTTP/1.1
Host: your-endpoint 
Upgrade: WebSocket 
Connection: Upgrade 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
sec-WebSocket-Key: any random base64 value 
sec-websocket-protocol: mqtt 
sec-WebSocket-Version: websocket version
```

## Signieren des Tokens
<a name="custom-auth-token-signature"></a>

Sie müssen das Token mit dem privaten Schlüssel des Paars aus öffentlichem und privatem Schlüssel signieren, das Sie im `create-authorizer`-Aufruf verwendet haben. Die folgenden Beispiele zeigen, wie die Tokensignatur mithilfe eines UNIX-ähnlichen Befehls und erstellt wird. JavaScript Sie verwenden den SHA-256-Hash-Algorithmus, um die Signatur zu kodieren.

------
#### [ Command line ]

```
echo -n TOKEN_VALUE | openssl dgst -sha256 -sign PEM encoded RSA private key | openssl base64
```

------
#### [ JavaScript ]

```
const crypto = require('crypto')

const key = "PEM encoded RSA private key"

const k = crypto.createPrivateKey(key)
let sign = crypto.createSign('SHA256')
sign.write(t)
sign.end()
const s = sign.sign(k, 'base64')
```

------

# Fehlerbehebung für Ihre Genehmiger
<a name="custom-auth-troubleshooting"></a>

 In diesem Thema werden häufig auftretende Probleme, die zu Konflikten bei benutzerdefinierten Authentifizierungsworkflows führen können, sowie Schritte zu deren Behebung beschrieben. **Um Probleme am effektivsten zu beheben, aktivieren Sie CloudWatch Protokolle für AWS IoT Core und setzen Sie die Protokollebene auf DEBUG.** Sie können CloudWatch Protokolle in der AWS IoT Core Konsole aktivieren ([https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/)). Weitere Informationen zum Aktivieren und Konfigurieren von Protokollen für AWS IoT Core finden Sie unter [Konfigurieren Sie die AWS IoT Protokollierung](configure-logging.md). 

**Anmerkung**  
Wenn Sie die Protokollebene für längere Zeit auf **DEBUG** belassen, CloudWatch können große Mengen an Protokolldaten gespeichert werden. Dies kann Ihre CloudWatch Gebühren erhöhen. Erwägen Sie, die ressourcenbasierte Protokollierung zu verwenden, um die Ausführlichkeit nur für Geräte in einer bestimmten Objektgruppe zu erhöhen. Weitere Informationen zur ressourcenbasierten Protokollierung finden Sie unter [Konfigurieren Sie die AWS IoT Protokollierung](configure-logging.md). Wenn Sie mit der Fehlerbehebung fertig sind, reduzieren Sie außerdem die Protokollebene auf eine weniger ausführliche Ebene.

Bevor Sie mit der Problembehandlung beginnen, überprüfen Sie [Grundlegendes zum Workflow für die benutzerdefinierte Authentifizierung](custom-authorizer.md) für eine allgemeine Übersicht über den benutzerdefinierten Authentifizierungsprozess. Dadurch können Sie leichter die mögliche Ursache eines Problems nachvollziehen und danach suchen.

In diesem Thema werden zwei Bereiche behandelt, die Sie untersuchen sollten.
+ Probleme im Zusammenhang mit der Lambda-Funktion Ihres Genehmigers.
+ Probleme im Zusammenhang mit Ihrem Gerät.

## Nach Problemen mit der Lambda-Funktion Ihres Genehmigers suchen
<a name="custom-auth-troubleshooting-lambda"></a>

Gehen Sie wie folgt vor, um sicherzustellen, dass die Verbindungsversuche Ihrer Geräte Ihre Lambda-Funktion aufrufen.

1. Überprüfen Sie, welche Lambda-Funktion Ihrem Genehmiger zugeordnet ist.

   Sie können dies tun, indem Sie die [DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html)API aufrufen oder im Bereich **Secure** der AWS IoT Core Konsole auf den gewünschten Autorisierer klicken.

1. Überprüfen Sie die Aufrufmetriken der Lambda-Funktion. Führen Sie dazu die folgenden Schritte aus.

   1. Öffnen Sie die AWS Lambda Konsole ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) und wählen Sie die Funktion aus, die Ihrem Autorisierer zugeordnet ist.

   1. Wählen Sie die Registerkarte **Überwachen** und überprüfen Sie die Metriken des für Ihr Problem relevanten Zeitraums.

1. Wenn Sie keine Aufrufe sehen, überprüfen Sie, ob der Benutzer berechtigt AWS IoT Core ist, Ihre Lambda-Funktion aufzurufen. Wenn Sie Aufrufe sehen, fahren Sie mit dem nächsten Schritt fort. Führen Sie die folgenden Schritte aus, um sicherzustellen, dass Ihre Lambda-Funktion über die erforderlichen Berechtigungen verfügt.

   1. Wählen Sie in der Konsole den Tab „**Berechtigungen**“ für Ihre Funktion aus. AWS Lambda 

   1. Suchen Sie den Abschnitt **Ressourcenbasierte Richtlinie** am Seitenende. Wenn Ihre Lambda-Funktion über die erforderlichen Berechtigungen verfügt, sieht die Richtlinie wie im folgenden Beispiel aus.  
****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Id": "default",
        "Statement": [
          {
            "Sid": "Id123",
            "Effect": "Allow",
            "Principal": {
              "Service": "iot.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-1:111111111111:function:FunctionName",
            "Condition": {
              "ArnLike": {
                "AWS:SourceArn": "arn:aws:iot:us-east-1:111111111111:authorizer/AuthorizerName"
              },
              "StringEquals": {
                "AWS:SourceAccount": "111111111111"
              }
            }
          }
        ]
      }
      ```

   1. Diese Richtlinie erteilt dem AWS IoT Core Schulleiter die `InvokeFunction` Erlaubnis für Ihre Funktion. Wenn Sie sie nicht sehen, müssen Sie sie mithilfe der [AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)API hinzufügen. Im folgenden Beispiel wird gezeigt, wie Sie sie über AWS CLI hinzufügen können.

      ```
      aws lambda add-permission --function-name FunctionName --principal iot.amazonaws.com --source-arn AuthorizerARn --statement-id Id-123 --action "lambda:InvokeFunction"
      ```

1. Wenn Sie Aufrufe sehen, stellen Sie sicher, dass keine Fehler vorliegen. Ein Fehler könnte darauf hinweisen, dass die Lambda-Funktion das Verbindungsereignis, das an sie AWS IoT Core gesendet wird, nicht richtig verarbeitet.

   Hinweise zur Behandlung des Ereignisses in Ihrer Lambda-Funktion finden Sie unter [Definieren Ihrer Lambda-Funktion](custom-auth-lambda.md). Sie können die Testfunktion in der AWS Lambda Konsole ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) verwenden, um Testwerte in der Funktion fest zu codieren, um sicherzustellen, dass die Funktion Ereignisse korrekt verarbeitet.

1. Wenn Sie Aufrufe ohne Fehler sehen, Ihre Geräte jedoch keine Verbindung herstellen (oder Nachrichten veröffentlichen, abonnieren und empfangen) können, liegt das Problem möglicherweise daran, dass die Richtlinie, die Ihre Lambda-Funktion zurückgibt, keine Berechtigungen für die Aktionen gewährt, die Ihre Geräte ausführen möchten. Führen Sie die folgenden Schritte aus, um festzustellen, ob ein Fehler bei der Richtlinie vorliegt, die die Funktion zurückgibt.

   1. Verwenden Sie eine Amazon CloudWatch Logs Insights-Abfrage, um Protokolle über einen kurzen Zeitraum auf Fehler zu überprüfen. Die folgende Beispielabfrage sortiert Ereignisse nach Zeitstempel und sucht nach Fehlern.

      ```
      display clientId, eventType, status, @timestamp | sort @timestamp desc | filter status = "Failure"    
      ```

   1. Aktualisieren Sie Ihre Lambda-Funktion, um die Daten zu protokollieren, zu denen sie zurückkehrt, AWS IoT Core und das Ereignis, das die Funktion auslöst. Sie können diese Protokolle verwenden, um die Richtlinie zu überprüfen, die die Funktion erstellt.

1. Wenn Sie Aufrufe ohne Fehler sehen, Ihre Geräte jedoch keine Verbindung herstellen (oder Nachrichten veröffentlichen, abonnieren und empfangen) können, könnte eine weitere Ursache sein, dass Ihre Lambda-Funktion das Timeout-Limit überschritten hat. Das Timeout-Limit der Lambda-Funktion für den benutzerdefinierten Genehmiger beträgt 5 Sekunden. Sie können die Funktionsdauer in CloudWatch Protokollen oder Metriken überprüfen. 

## Untersuchen von Geräteproblemen
<a name="custom-auth-troubleshooting-investigate"></a>

Wenn Sie keine Probleme mit dem Aufrufen Ihrer Lambda-Funktion oder mit der Richtlinie, die die Funktion zurückgibt, feststellen, suchen Sie nach Problemen bei den Verbindungsversuchen Ihrer Geräte. Fehlerhaft formatierte Verbindungsanfragen können dazu führen, dass Ihr Autorisierer AWS IoT Core nicht ausgelöst wird. Verbindungsprobleme können sowohl auf TLS- als auch auf Anwendungsebene auftreten.

**Mögliche Probleme mit der TLS-Ebene:**
+ Kunden müssen bei allen benutzerdefinierten Authentifizierungsanfragen entweder einen Hostnamen-Header (HTTP, MQTT over WebSockets) oder die Server Name Indication TLS-Erweiterung (HTTP, MQTT over WebSockets, MQTT) übergeben. In beiden Fällen muss der übergebene Wert mit einem der Datenendpunkte Ihres Kontos übereinstimmen. AWS IoT Core Dies sind die Endpunkte, die zurückgegeben werden, wenn Sie die folgenden CLI-Befehle ausführen.
  + `aws iot describe-endpoint --endpoint-type iot:Data-ATS`
  + `aws iot describe-endpoint --endpoint-type iot:Data`(für ältere VeriSign Endpunkte)
+ Geräte, die eine benutzerdefinierte Authentifizierung in MQTT-Verbindungen verwenden, müssen auch die TLS-Erweiterung „Application Layer Protocol Negotiation“ (ALPN) mit dem Wert `mqtt` übergeben.
+ Die benutzerdefinierte Authentifizierung ist derzeit nur auf Port 443 verfügbar.

**Mögliche Probleme auf Anwendungsebene:**
+ Wenn das Signieren aktiviert ist (das Feld `signingDisabled` in Ihrem Genehmiger lautet „false“), suchen Sie nach den folgenden Signaturproblemen.
  + Stellen Sie sicher, dass Sie die Tokensignatur entweder im `x-amz-customauthorizer-signature`-Header oder in einem Abfragezeichenfolgenparameter übergeben.
  + Stellen Sie sicher, dass der Service keinen anderen Wert als das Token signiert.
  + Stellen Sie sicher, dass Sie das Token im Header- oder Abfrageparameter übergeben, den Sie im Feld `token-key-name` in Ihrem Genehmiger angegeben haben.
+ Stellen Sie sicher, dass der Genehmigername, den Sie im `x-amz-customauthorizer-name`-Header- oder Abfragezeichenfolgenparameter übergeben, gültig ist oder dass Sie einen Standardgenehmiger für Ihr Konto angegeben haben.