

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Firma dei certificati autogestita tramite provider di certificati AWS IoT Core
<a name="provisioning-cert-provider"></a>

È possibile creare un fornitore di AWS IoT Core certificati per firmare le richieste di firma dei certificati (CSRs) in AWS IoT Fleet Provisioning. Un fornitore di certificati fa riferimento a una funzione Lambda e all'[API `CreateCertificateFromCsr` MQTT per](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) il provisioning della flotta. La funzione Lambda accetta un CSR e restituisce un certificato client firmato.

Quando non disponete di un fornitore di certificati Account AWS, l'[API CreateCertificateFromCsr MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) viene richiamata in Fleet Provisioning per generare il certificato a partire da una CSR. Dopo aver creato un fornitore di certificati, il comportamento dell'API [CreateCertificateFromCsr MQTT cambierà e tutte le chiamate a questa API](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) MQTT richiameranno il fornitore del certificato per emettere il certificato.

Con il fornitore di AWS IoT Core certificati, è possibile implementare soluzioni che utilizzano autorità di certificazione private (CAs) [AWS Private CA](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html), ad esempio altre autorità di fiducia CAs pubblica o la propria infrastruttura a chiave pubblica (PKI) per firmare la CSR. Inoltre, è possibile utilizzare il fornitore di certificati per personalizzare i campi del certificato client, ad esempio periodi di validità, algoritmi di firma, emittenti ed estensioni.

**Importante**  
È possibile creare un solo fornitore di certificati per. Account AWS La modifica del comportamento di firma si applica all'intera flotta che chiama l'[API CreateCertificateFromCsr MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) fino a quando non si elimina il fornitore di certificati dal proprio Account AWS.

**Topics**
+ [Come funziona la firma dei certificati autogestita nel provisioning del parco veicoli](#provisioning-cert-provider-how-it-works)
+ [Input della funzione Lambda del fornitore di certificati](#provisioning-cert-provider-lambda-input)
+ [Valore restituito dalla funzione Lambda del fornitore di certificati](#provisioning-cert-provider-lambda-return)
+ [Funzione Lambda di esempio](#provisioning-cert-provider-lambda)
+ [Firma dei certificati autogestita per il rifornimento del parco veicoli](#provisioning-self-certificate-signing)
+ [AWS CLI comandi per il fornitore di certificati](#provisioning-cert-provider-cli)

## Come funziona la firma dei certificati autogestita nel provisioning del parco veicoli
<a name="provisioning-cert-provider-how-it-works"></a>

### Concetti chiave
<a name="provisioning-cert-provider-concepts"></a>

I seguenti concetti forniscono dettagli che possono aiutarti a capire come funziona la firma dei certificati autogestita nel AWS IoT provisioning del parco veicoli. Per ulteriori informazioni, consulta [Provisioning dei dispositivi che non dispongono di certificati di dispositivo utilizzando](https://docs.aws.amazon.com//iot/latest/developerguide/provision-wo-cert.html) il provisioning del parco veicoli.

**AWS IoT approvvigionamento del parco veicoli**  
Con AWS IoT Fleet Provisioning (abbreviazione di fleet provisioning), AWS IoT Core genera e consegna in modo sicuro i certificati dei dispositivi ai tuoi dispositivi quando si connettono AWS IoT Core per la prima volta. Puoi utilizzare il provisioning del parco veicoli per connettere dispositivi che non dispongono di certificati di dispositivo a. AWS IoT Core

**Richiesta di firma del certificato (CSR)**  
Nel processo di approvvigionamento della flotta, un dispositivo invia una richiesta AWS IoT Core tramite il sistema MQTT di [approvvigionamento della flotta](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html). APIs Questa richiesta include una richiesta di firma del certificato (CSR), che verrà firmata per creare un certificato client. 

**AWS firma gestita dei certificati nell'ambito del provisioning della flotta**  
AWS managed è l'impostazione predefinita per la firma dei certificati nel provisioning del parco veicoli. Con la firma AWS gestita dei certificati, AWS IoT Core firmerà CSRs utilizzando la propria CAs firma.

**Firma dei certificati gestita automaticamente durante il provisioning del parco veicoli**  
L'autogestione è un'altra opzione per la firma dei certificati nell'ambito del provisioning del parco veicoli. Con la firma dei certificati autogestita, puoi creare un fornitore di AWS IoT Core certificati da firmare. CSRs Puoi utilizzare la firma dei certificati autogestita per firmare CSRs con una CA generata da una CA AWS privata, da un'altra CA pubblicamente affidabile o dalla tua infrastruttura a chiave pubblica (PKI).

**AWS IoT Core fornitore di certificati**  
AWS IoT Core certificate provider (abbreviazione di certificate provider) è una risorsa gestita dal cliente che viene utilizzata per la firma dei certificati autogestita nel provisioning del parco veicoli.

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

Il diagramma seguente è un'illustrazione semplificata di come funziona la firma degli autocertificati nell'approvvigionamento del parco veicoli. AWS IoT 

![\[AWS IoT Core fornitore di certificati per l'approvvigionamento della flotta\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/provisioning-cert-provider.png)

+ Quando un nuovo dispositivo IoT viene prodotto o introdotto nella flotta, ha bisogno di certificati client con AWS IoT Core cui autenticarsi.
+ Come parte del processo di approvvigionamento della flotta, il dispositivo effettua una richiesta di certificati client tramite il [Fleet Provisioning](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html) MQTT. AWS IoT Core APIs Questa richiesta include una richiesta di firma del certificato (CSR).
+ AWS IoT Core richiama il fornitore del certificato e trasmette la CSR come input al provider.
+ Il fornitore del certificato accetta la CSR come input ed emette un certificato client.

  Per la firma AWS gestita dei certificati, AWS IoT Core firma la CSR utilizzando la propria CA ed emette un certificato client.
+ Con il certificato client emesso, il dispositivo continuerà il provisioning del parco veicoli e stabilirà una connessione sicura con. AWS IoT Core

## Input della funzione Lambda del fornitore di certificati
<a name="provisioning-cert-provider-lambda-input"></a>

AWS IoT Core invia il seguente oggetto alla funzione Lambda quando un dispositivo si registra con essa. Il valore di `certificateSigningRequest` è la CSR in [formato Privacy-Enhanced Mail (PEM) fornita](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-format.html) nella richiesta. `CreateCertificateFromCsr` `principalId`È l'ID del principale a cui ci si connette quando si effettua la AWS IoT Core richiesta. `CreateCertificateFromCsr` `clientId`è l'ID client impostato per la connessione MQTT.

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

## Valore restituito dalla funzione Lambda del fornitore di certificati
<a name="provisioning-cert-provider-lambda-return"></a>

La funzione Lambda deve restituire una risposta che contenga il `certificatePem` valore. Di seguito è riportato un esempio di risposta riuscita. AWS IoT Core utilizzerà il valore restituito (`certificatePem`) per creare il certificato.

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

Se la registrazione va a buon fine, `CreateCertificateFromCsr` restituirà lo stesso `certificatePem` nella `CreateCertificateFromCsr` risposta. Per ulteriori informazioni, vedere l'esempio del payload di risposta di [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr).

## Funzione Lambda di esempio
<a name="provisioning-cert-provider-lambda"></a>

Prima di creare un fornitore di certificati, devi creare una funzione Lambda per firmare una CSR. Di seguito è riportato un esempio di funzione Lambda in Python. Questa funzione chiama AWS Private CA per firmare l'input CSR, utilizzando una CA privata e l'`SHA256WITHRSA`algoritmo di firma. Il certificato client restituito sarà valido per un anno. Per ulteriori informazioni AWS Private CA e su come creare una CA privata, consulta [Cos'è una CA AWS privata?](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) e [Creazione di una CA privata](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
    }
```

**Importante**  
I certificati restituiti dalla funzione Lambda devono avere lo stesso nome dell'oggetto e la stessa chiave pubblica della Certificate Signing Request (CSR).
L'esecuzione della funzione Lambda deve terminare entro 5 secondi.
La funzione Lambda deve trovarsi nella stessa regione della Account AWS risorsa del fornitore di certificati.
Al responsabile del AWS IoT servizio deve essere concessa l'autorizzazione di invoca la funzione Lambda. Per evitare [confusi problemi con l'assistente](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html), ti consigliamo di impostare `sourceArn` e `sourceAccount` per i permessi di invoca. Per ulteriori informazioni consulta la pagina relativa alla [prevenzione del problema "confused deputy" tra servizi](https://docs.aws.amazon.com//iot/latest/developerguide/cross-service-confused-deputy-prevention.html).

Il seguente esempio di policy basata sulle risorse per Lambda concede l' AWS IoT autorizzazione a richiamare la funzione [Lambda](https://docs.aws.amazon.com//lambda/latest/dg/access-control-resource-based.html):

****  

```
{
	"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"
				}
			}
		}
	]
}
```

## Firma dei certificati autogestita per il rifornimento del parco veicoli
<a name="provisioning-self-certificate-signing"></a>

Puoi scegliere la firma dei certificati autogestita per il rifornimento della flotta utilizzando o. AWS CLI Console di gestione AWS

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

Per scegliere la firma dei certificati autogestita, è necessario creare un fornitore di AWS IoT Core certificati per accedere CSRs al provisioning del parco veicoli. AWS IoT Core richiama il fornitore del certificato, che accetta un CSR come input e restituisce un certificato client. Per creare un fornitore di certificati, utilizza l'operazione `CreateCertificateProvider` API o il comando `create-certificate-provider` CLI.

**Nota**  
Dopo aver creato un fornitore di certificati, il comportamento dell'[`CreateCertificateFromCsr`API for fleet provisioning cambierà in](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) modo che tutte le chiamate a `CreateCertificateFromCsr` richiameranno il fornitore di certificati per creare i certificati. La modifica di questo comportamento dopo la creazione di un fornitore di certificati può richiedere alcuni minuti.

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

Di seguito viene illustrato un esempio di output per questo comando:

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

Per ulteriori informazioni, vedere `[CreateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateProvider.html)` dall'*AWS IoT**API Reference*.

### Console di gestione AWS
<a name="provisioning-self-certificate-signing-console"></a>

Per scegliere di utilizzare la firma dei certificati autogestita Console di gestione AWS, procedi nel seguente modo:

1. Accedere alla [console AWS IoT](https://console.aws.amazon.com//iot/home).

1. Nella barra di navigazione a sinistra, in **Sicurezza**, scegli **Firma del certificato**.

1. Nella pagina di **firma del certificato**, in **Dettagli di firma del certificato**, scegli **Modifica metodo di firma del certificato**.

1. Nella pagina **Modifica metodo di firma del certificato**, in **Metodo di firma del certificato**, scegli **Gestione automatica**.

1. Nella sezione **Impostazioni autogestite**, inserisci un nome per il fornitore di certificati, quindi crea o scegli una funzione Lambda.

1. Scegli **Aggiorna la firma del certificato**.

## AWS CLI comandi per il fornitore di certificati
<a name="provisioning-cert-provider-cli"></a>

### Crea un fornitore di certificati
<a name="provisioning-create-cert-provider"></a>

Per creare un fornitore di certificati, utilizza l'operazione `CreateCertificateProvider` API o il comando `create-certificate-provider` CLI. 

**Nota**  
Dopo aver creato un fornitore di certificati, il comportamento dell'[`CreateCertificateFromCsr`API for fleet provisioning cambierà in](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) modo che tutte le chiamate a `CreateCertificateFromCsr` richiameranno il fornitore di certificati per creare i certificati. La modifica di questo comportamento dopo la creazione di un fornitore di certificati può richiedere alcuni minuti.

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

Di seguito viene illustrato un esempio di output per questo comando:

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

Per ulteriori informazioni, vedere `[CreateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateProvider.html)` dall'*AWS IoT**API Reference*.

### Aggiorna il fornitore di certificati
<a name="provisioning-update-cert-provider"></a>

Per aggiornare un fornitore di certificati, utilizza l'operazione `UpdateCertificateProvider` API o il comando `update-certificate-provider` CLI.

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

Di seguito viene illustrato un esempio di output per questo comando:

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

Per ulteriori informazioni, vedere `[UpdateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateCertificateProvider.html)` dall'*AWS IoT**API Reference*.

### Descrivi il fornitore di
<a name="provisioning-describe-cert-provider"></a>

Per descrivere un fornitore di certificati, utilizza l'operazione `DescribeCertificateProvider` API o il comando `describe-certificate-provider` CLI.

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

Di seguito viene illustrato un esempio di output per questo comando:

```
{
	"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"
}
```

Per ulteriori informazioni, vedere `[DescribeCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_DescribeCertificateProvider.html)` dall'*AWS IoT**API Reference*.

### Eliminare il fornitore di certificati
<a name="provisioning-delete-cert-provider"></a>

Per eliminare un fornitore di certificati, utilizza l'operazione `DeleteCertificateProvider` API o il comando `delete-certificate-provider` CLI. Se elimini la risorsa relativa al fornitore di certificati, il comportamento di `CreateCertificateFromCsr` riprenderà e AWS IoT verranno creati certificati firmati AWS IoT da una CSR.

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

Il comando non produce output. 

Per ulteriori informazioni, consulta l'*AWS IoT**API `[DeleteCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_DeleteCertificateProvider.html)`* Reference.

### Elenca i fornitori di certificati
<a name="provisioning-list-cert-provider"></a>

Per elencare i fornitori di certificati all'interno del tuo Account AWS, utilizza l'operazione `ListCertificateProviders` API o il comando `list-certificate-providers` CLI.

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

Di seguito viene illustrato un esempio di output per questo comando:

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

Per ulteriori informazioni, vedere [https://docs.aws.amazon.com//iot/latest/apireference/API_ListCertificateProviders.html](https://docs.aws.amazon.com//iot/latest/apireference/API_ListCertificateProviders.html)dall'*AWS IoT**API Reference*.