

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

# Selbstverwaltete Zertifikatsignierung mithilfe des Zertifikatsanbieters AWS IoT Core
<a name="provisioning-cert-provider"></a>

Sie können einen AWS IoT Core Zertifikatsanbieter erstellen, um Zertifikatssignieranfragen (CSRs) bei der AWS IoT Flottenbereitstellung zu signieren. Ein Zertifikatsanbieter verweist auf eine Lambda-Funktion und die [`CreateCertificateFromCsr`MQTT-API für die Flottenbereitstellung](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr). Die Lambda-Funktion akzeptiert eine CSR und gibt ein signiertes Client-Zertifikat zurück.

Wenn Sie keinen Zertifikatsanbieter bei sich haben AWS-Konto, wird die [CreateCertificateFromCsr MQTT-API](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) bei der Flottenbereitstellung aufgerufen, um das Zertifikat aus einer CSR zu generieren. Nachdem Sie einen Zertifikatsanbieter erstellt haben, ändert sich das Verhalten der [CreateCertificateFromCsr MQTT-API](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) und alle Aufrufe dieser MQTT-API rufen den Zertifikatsanbieter auf, um das Zertifikat auszustellen.

Mit dem AWS IoT Core Zertifikatsanbieter können Sie Lösungen implementieren, die private Zertifizierungsstellen (CAs) wie [AWS Private CA](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)andere öffentlich vertrauenswürdige oder Ihre eigene Public Key Infrastructure (PKI) verwenden CAs, um die CSR zu signieren. Darüber hinaus können Sie den Zertifikatsanbieter verwenden, um die Felder Ihres Client-Zertifikats wie Gültigkeitszeiträume, Signaturalgorithmen, Aussteller und Erweiterungen anzupassen.

**Wichtig**  
Sie können jeweils nur einen Zertifikatsanbieter erstellen. AWS-Konto Die Änderung des Signierverhaltens gilt für die gesamte Flotte, die die [CreateCertificateFromCsr MQTT-API](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) aufruft, bis Sie den Zertifikatsanbieter aus Ihrem AWS-Konto löschen.

**Topics**
+ [So funktioniert die selbstverwaltete Zertifikatsignierung bei der Flottenbereitstellung](#provisioning-cert-provider-how-it-works)
+ [Eingabe der Lambda-Funktion des Zertifikatsanbieters](#provisioning-cert-provider-lambda-input)
+ [Rückgabewert der Lambda-Funktion des Zertifikatsanbieters](#provisioning-cert-provider-lambda-return)
+ [Beispiel-Lambda-Funktion](#provisioning-cert-provider-lambda)
+ [Selbstverwaltete Zertifikatsignierung für die Flottenbereitstellung](#provisioning-self-certificate-signing)
+ [AWS CLI Befehle für den Zertifikatsanbieter](#provisioning-cert-provider-cli)

## So funktioniert die selbstverwaltete Zertifikatsignierung bei der Flottenbereitstellung
<a name="provisioning-cert-provider-how-it-works"></a>

### Die wichtigsten Konzepte
<a name="provisioning-cert-provider-concepts"></a>

Die folgenden Konzepte enthalten Einzelheiten, anhand derer Sie verstehen können, wie die selbstverwaltete Zertifikatsignierung bei der Flottenbereitstellung funktioniert. AWS IoT Weitere Informationen finden Sie unter [Bereitstellen von Geräten ohne Gerätezertifikate mithilfe von Fleet Provisioning](https://docs.aws.amazon.com//iot/latest/developerguide/provision-wo-cert.html).

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

**Anfrage zum Signieren eines Zertifikats (CSR)**  
Bei der Flottenbereitstellung stellt ein Gerät eine Anfrage an das MQTT für die AWS IoT Core [Flottenbereitstellung](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html). APIs Diese Anfrage beinhaltet eine Certificate Signing Request (CSR), die signiert wird, um ein Client-Zertifikat zu erstellen. 

**AWS verwaltete Zertifikatsignierung bei der Flottenbereitstellung**  
AWS managed ist die Standardeinstellung für das Signieren von Zertifikaten bei der Flottenbereitstellung. Bei AWS verwalteter Zertifikatsignierung AWS IoT Core wird die Signatur CSRs mit eigener CAs Signatur signiert.

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

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

### Diagramm
<a name="provisioning-cert-provider-diagram"></a>

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

![\[AWS IoT Core Anbieter von Zertifikaten für die Bereitstellung von Flotten\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/provisioning-cert-provider.png)

+ Wenn ein neues IoT-Gerät hergestellt oder in die Flotte eingeführt wird, benötigt es Kundenzertifikate, mit AWS IoT Core denen es sich authentifizieren kann.
+ Im Rahmen des Flottenbereitstellungsprozesses fordert das Gerät über das AWS IoT Core [Flottenbereitstellungs-MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html) Kundenzertifikate an. APIs Diese Anfrage beinhaltet eine Certificate Signing Request (CSR).
+ AWS IoT Core ruft den Zertifikatsanbieter auf und übergibt die CSR als Eingabe an den Anbieter.
+ Der Zertifikatsanbieter verwendet die CSR als Eingabe und stellt ein Client-Zertifikat aus.

  Signiert beim Signieren AWS verwalteter Zertifikate die CSR mit AWS IoT Core einer eigenen Zertifizierungsstelle und stellt ein Client-Zertifikat aus.
+ Mit dem ausgestellten Client-Zertifikat setzt das Gerät die Flottenbereitstellung fort und stellt eine sichere Verbindung mit her. AWS IoT Core

## Eingabe der Lambda-Funktion des Zertifikatsanbieters
<a name="provisioning-cert-provider-lambda-input"></a>

AWS IoT Core sendet das folgende Objekt an die Lambda-Funktion, wenn sich ein Gerät bei ihr registriert. Der Wert von `certificateSigningRequest` ist die CSR im [PEM-Format (Privacy-Enhanced Mail)](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-format.html), die in der Anfrage angegeben ist. `CreateCertificateFromCsr` Das `principalId` ist die ID des Prinzipals, mit dem bei der Anfrage eine Verbindung hergestellt wurde. AWS IoT Core `CreateCertificateFromCsr` `clientId`ist die Client-ID, die für die MQTT-Verbindung festgelegt wurde.

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

## Rückgabewert der Lambda-Funktion des Zertifikatsanbieters
<a name="provisioning-cert-provider-lambda-return"></a>

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

```
{
	"certificatePem": "string"
}
```

Wenn die Registrierung erfolgreich ist, `CreateCertificateFromCsr` wird dasselbe `certificatePem` in der `CreateCertificateFromCsr` Antwort zurückgegeben. Weitere Informationen finden Sie im Beispiel für die Antwort-Payload von [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr).

## Beispiel-Lambda-Funktion
<a name="provisioning-cert-provider-lambda"></a>

Bevor Sie einen Zertifikatsanbieter erstellen, müssen Sie eine Lambda-Funktion erstellen, um eine CSR zu signieren. Das Folgende ist ein Beispiel für eine Lambda-Funktion in Python. Diese Funktion ruft AWS Private CA auf, um die Eingabe-CSR unter Verwendung einer privaten Zertifizierungsstelle und des `SHA256WITHRSA` Signaturalgorithmus zu signieren. Das zurückgegebene Client-Zertifikat ist ein Jahr lang gültig. Weitere Informationen zu AWS Private CA und zum Erstellen einer privaten Zertifizierungsstelle finden Sie unter [Was ist eine AWS private Zertifizierungsstelle?](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) und [Eine private CA erstellen](https://docs.aws.amazon.com/privateca/latest/userguide/create-CA.html).

```
import os
import time
import uuid
import boto3

def lambda_handler(event, context):
    ca_arn = os.environ['CA_ARN']
    csr = (event['certificateSigningRequest']).encode('utf-8')

    acmpca = boto3.client('acm-pca')
    cert_arn = acmpca.issue_certificate(
        CertificateAuthorityArn=ca_arn, 
        Csr=csr,
        Validity={"Type": "DAYS", "Value": 365}, 
        SigningAlgorithm='SHA256WITHRSA',
        IdempotencyToken=str(uuid.uuid4())
    )['CertificateArn']
    
    # Wait for certificate to be issued
    time.sleep(1)    
    cert_pem = acmpca.get_certificate(
        CertificateAuthorityArn=ca_arn,
        CertificateArn=cert_arn
    )['Certificate']
    
    return {
        'certificatePem': cert_pem
    }
```

**Wichtig**  
Von der Lambda-Funktion zurückgegebene Zertifikate müssen denselben Betreffnamen und denselben öffentlichen Schlüssel haben wie die Certificate Signing Request (CSR).
Die Lambda-Funktion muss in 5 Sekunden fertig ausgeführt werden.
Die Lambda-Funktion muss sich in derselben AWS-Konto Region wie die Ressource des Zertifikatsanbieters befinden.
Dem AWS IoT Dienstprinzipal muss die Aufrufberechtigung für die Lambda-Funktion erteilt werden. Um [verwirrende Probleme mit Stellvertretern](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html) zu vermeiden, empfehlen wir Ihnen, die Zugriffsberechtigungen `sourceArn` und `sourceAccount` für das Aufrufen festzulegen. Weitere Informationen finden Sie unter [Vermeidung des dienstübergreifenden Confused-Deputy-Problems](https://docs.aws.amazon.com//iot/latest/developerguide/cross-service-confused-deputy-prevention.html).

Das folgende Beispiel für eine ressourcenbasierte Richtlinie für [Lambda](https://docs.aws.amazon.com//lambda/latest/dg/access-control-resource-based.html) gewährt AWS IoT die Erlaubnis, die Lambda-Funktion aufzurufen:

****  

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

## Selbstverwaltete Zertifikatsignierung für die Flottenbereitstellung
<a name="provisioning-self-certificate-signing"></a>

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

### AWS CLI
<a name="provisioning-self-certificate-signing-cli"></a>

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

**Anmerkung**  
Nachdem Sie einen Zertifikatsanbieter erstellt haben, ändert sich das Verhalten der [`CreateCertificateFromCsr`API für die Flottenbereitstellung](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr), sodass bei allen Aufrufen von der Zertifikatsanbieter zur Erstellung der Zertifikate aufgerufen `CreateCertificateFromCsr` wird. Es kann einige Minuten dauern, bis sich dieses Verhalten ändert, nachdem ein Zertifikatsanbieter erstellt wurde.

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

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

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

Weitere Informationen finden Sie in `[CreateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateProvider.html)` der *AWS IoT**API-Referenz*.

### AWS-Managementkonsole
<a name="provisioning-self-certificate-signing-console"></a>

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

1. Rufen Sie die [AWS IoT -Konsole](https://console.aws.amazon.com//iot/home) auf.

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

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

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

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

1. Wählen Sie **Zertifikatsignierung aktualisieren**.

## AWS CLI Befehle für den Zertifikatsanbieter
<a name="provisioning-cert-provider-cli"></a>

### Zertifikatsanbieter erstellen
<a name="provisioning-create-cert-provider"></a>

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

**Anmerkung**  
Nachdem Sie einen Zertifikatsanbieter erstellt haben, ändert sich das Verhalten der [`CreateCertificateFromCsr`API für die Flottenbereitstellung](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr), sodass bei allen Aufrufen von der Zertifikatsanbieter zur Erstellung der Zertifikate aufgerufen `CreateCertificateFromCsr` wird. Es kann einige Minuten dauern, bis sich dieses Verhalten ändert, nachdem ein Zertifikatsanbieter erstellt wurde.

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

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

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

Weitere Informationen finden Sie in `[CreateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateProvider.html)` der *AWS IoT**API-Referenz*.

### Aktualisieren Sie den Zertifikatsanbieter
<a name="provisioning-update-cert-provider"></a>

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

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

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

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

Weitere Informationen finden Sie in `[UpdateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateCertificateProvider.html)` der *AWS IoT**API-Referenz*.

### Beschreiben Sie den Zertifikatsanbieter
<a name="provisioning-describe-cert-provider"></a>

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

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

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

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

Weitere Informationen finden Sie in `[DescribeCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_DescribeCertificateProvider.html)` der *AWS IoT**API-Referenz*.

### Löschen Sie den Zertifikatsanbieter
<a name="provisioning-delete-cert-provider"></a>

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

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

Dieser Befehl liefert keine Ausgabe. 

Weitere Informationen finden Sie in `[DeleteCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_DeleteCertificateProvider.html)` der *AWS IoT**API-Referenz.*

### Zertifikatsanbieter auflisten
<a name="provisioning-list-cert-provider"></a>

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

```
aws iot list-certificate-providers
```

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

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

Weitere Informationen finden Sie in [https://docs.aws.amazon.com//iot/latest/apireference/API_ListCertificateProviders.html](https://docs.aws.amazon.com//iot/latest/apireference/API_ListCertificateProviders.html)der *AWS IoT**API-Referenz*.