View a markdown version of this page

Self-managed firma del certificato utilizzando AWS IoT Core fornitore di certificati - AWS IoT Core

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à.

Self-managed firma del certificato utilizzando AWS IoT Core fornitore di certificati

È possibile creare un fornitore di AWS IoT Core certificati per firmare le richieste di firma dei certificati (CSR) nel provisioning del AWS IoT parco veicoli. Un fornitore di certificati fa riferimento a una funzione Lambda e all'API CreateCertificateFromCsr MQTT per il provisioning del parco veicoli. La funzione Lambda accetta un CSR e restituisce un certificato client firmato.

Quando non disponi di un fornitore di certificati Account AWS, nel fleet provisioning viene richiamata l'API CreateCertificateFromCsr MQTT per generare il certificato da un CSR. Dopo aver creato un provider di certificati, il comportamento dell'API CreateCertificateFromCsr MQTT cambierà e tutte le chiamate a questa API MQTT richiameranno il provider del certificato per emettere il certificato.

Con il fornitore di AWS IoT Core certificati, puoi implementare soluzioni che utilizzano autorità di certificazione (CA) private come altre CA pubblicamente attendibili o la tua infrastruttura a chiave pubblica (PKI) per firmare il CSR. AWS Private CA Inoltre, puoi utilizzare il fornitore di certificati per personalizzare i campi del certificato del tuo cliente, come periodi di validità, algoritmi di firma, emittenti ed estensioni.

Importante

Puoi 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 fino a quando non elimini il fornitore di certificati dal tuo. Account AWS

Come funziona la firma autogestita dei certificati nel provisioning del parco veicoli

Concetti chiave

I concetti seguenti 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 il provisioning del parco veicoli.

AWS IoT approvvigionamento della flotta

Con il AWS IoT fleet provisioning (abbreviazione di fleet provisioning), AWS IoT Core genera e fornisce in modo sicuro i certificati dei dispositivi ai dispositivi quando si connettono AWS IoT Core per la prima volta. Puoi utilizzare il fleet provisioning per connettere dispositivi a cui non sono dotati di certificati. AWS IoT Core

Richiesta di firma del certificato (CSR)

Nel processo di provisioning del parco veicoli, un dispositivo effettua una richiesta AWS IoT Core tramite le API MQTT di fleet provisioning. Questa richiesta include una richiesta di firma del certificato (CSR), che verrà firmata per creare un certificato client.

AWS firma gestita dei certificati nel provisioning del parco veicoli

AWS managed è l'impostazione predefinita per la firma dei certificati nel provisioning del parco veicoli. Con la firma dei certificati AWS gestita, AWS IoT Core firmerà i CSR utilizzando le proprie CA.

Self-managed firma del certificato nell'ambito del provisioning della flotta

Self-managed è un'altra opzione per la firma dei certificati nel provisioning della flotta. Con la firma dei certificati autogestita, si crea un fornitore di AWS IoT Core certificati per firmare i CSR. Puoi utilizzare la firma dei certificati autogestita per firmare i CSR con una CA generata da una CA AWS privata, da un'altra CA pubblicamente attendibile 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 autogestita dei certificati nel provisioning del parco veicoli.

Diagramma

Il diagramma seguente è un'illustrazione semplificata di come funziona la firma dell'autocertificazione nel AWS IoT provisioning del parco veicoli.

AWS IoT Core fornitore di certificati per l'approvvigionamento della flotta
  • Quando un nuovo dispositivo IoT viene prodotto o introdotto nella flotta, ha bisogno di certificati client con cui autenticarsi. AWS IoT Core

  • Come parte del processo di provisioning della flotta, il dispositivo effettua una richiesta di certificati client tramite AWS IoT Core le API MQTT di provisioning della flotta. Questa richiesta include una richiesta di firma del certificato (CSR).

  • AWS IoT Core richiama il fornitore del certificato e trasmette il CSR come input al fornitore.

  • Il fornitore del certificato accetta il CSR come input ed emette un certificato client.

    Per la firma AWS gestita dei certificati, AWS IoT Core firma il CSR utilizzando la propria CA ed emette un certificato client.

  • Con il certificato client emesso, il dispositivo continuerà a fornire il parco veicoli e stabilirà una connessione sicura con. AWS IoT Core

Input della funzione Lambda del fornitore del certificato

AWS IoT Core invia il seguente oggetto alla funzione Lambda quando un dispositivo si registra con essa. Il valore di certificateSigningRequest è il CSR in formato Privacy-Enhanced Mail (PEM) fornito nella richiesta. CreateCertificateFromCsr principalIdÈ l'ID del principale a cui ci si connette AWS IoT Core quando si effettua la CreateCertificateFromCsr richiesta. clientIdè l'ID client impostato per la connessione MQTT.

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

Valore restituito dalla funzione Lambda del fornitore del certificato

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 ha esito positivo, CreateCertificateFromCsr restituirà lo stesso certificatePem nella CreateCertificateFromCsr risposta. Per ulteriori informazioni, vedere l'esempio del payload di risposta di CreateCertificateFromCsr.

Funzione Lambda di esempio

Prima di creare un fornitore di certificati, è necessario creare una funzione Lambda per firmare una CSR. Quello che segue è un esempio di funzione Lambda in Python. Questa funzione chiama AWS Private CA a firmare il CSR di input, utilizzando una CA privata e l'SHA256WITHRSAalgoritmo di firma. Il certificato cliente restituito sarà valido per un anno. Per ulteriori informazioni AWS Private CA e su come creare una CA privata, vedi Che cos'è una CA AWS privata? e Creazione di una CA privata.

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 oggetto e la stessa chiave pubblica del Certificate Signing Request (CSR).

  • La funzione Lambda deve terminare l'esecuzione entro 5 secondi.

  • La funzione Lambda deve trovarsi nella stessa Account AWS area geografica della risorsa del fornitore del certificato.

  • Al responsabile del AWS IoT servizio deve essere concessa l'autorizzazione di richiamo per la funzione Lambda. Per evitare problemi di sostituzione confusi, ti consigliamo di impostare sourceArn e sourceAccount per le autorizzazioni di richiamo. Per ulteriori informazioni, consulta Prevenzione dei sostituti Cross-service confusi.

Il seguente esempio di policy basata sulle risorse per Lambda concede l'autorizzazione a richiamare AWS IoT la funzione Lambda:

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

Self-managed firma del certificato per l'approvvigionamento della flotta

È possibile scegliere la firma dei certificati autogestita per il provisioning del parco veicoli utilizzando o. AWS CLI Console di gestione AWS

Per scegliere la firma dei certificati autogestita, è necessario creare un fornitore di AWS IoT Core certificati per firmare i CSR nel 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, utilizzate l'operazione CreateCertificateProvider API o il comando create-certificate-provider CLI.

Nota

Dopo aver creato un provider di certificati, il comportamento dell'CreateCertificateFromCsrAPI per il provisioning del parco veicoli cambierà in modo che tutte le chiamate a CreateCertificateFromCsr invochino il provider di certificati per creare i certificati. Possono essere necessari alcuni minuti prima che questo comportamento cambi dopo la creazione di un provider di certificati.

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 mostrato 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, CreateCertificateProvider consultate l'AWS IoTAPI Reference.

Per scegliere l'utilizzo della firma dei certificati autogestita Console di gestione AWS, segui i passaggi:

  1. Accedere alla console AWS IoT.

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

  3. Nella pagina di firma del certificato, in Dettagli sulla firma del certificato, scegli Modifica metodo di firma del certificato.

  4. Nella pagina Modifica metodo di firma del certificato, in Metodo di firma del certificato, scegli Self-managed.

  5. Nella sezione delle Self-managed impostazioni, inserisci un nome per il fornitore di certificati, quindi crea o scegli una funzione Lambda.

  6. Scegli Aggiorna la firma del certificato.

AWS CLI comandi per il fornitore di certificati

Crea un fornitore di certificati

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

Nota

Dopo aver creato un provider di certificati, il comportamento dell'CreateCertificateFromCsrAPI per il provisioning del parco veicoli cambierà in modo che tutte le chiamate a CreateCertificateFromCsr invochino il provider di certificati per creare i certificati. Possono essere necessari alcuni minuti prima che questo comportamento cambi dopo la creazione di un provider di certificati.

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 mostrato 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, CreateCertificateProvider consultate l'AWS IoTAPI Reference.

Aggiorna il fornitore del certificato

Per aggiornare un fornitore di certificati, utilizzate 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 mostrato 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, UpdateCertificateProvider consultate l'AWS IoTAPI Reference.

Descrizione del fornitore del certificato

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

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

Di seguito viene mostrato 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, DescribeCertificateProvider consultate l'AWS IoTAPI Reference.

Elimina il fornitore del certificato

Per eliminare un fornitore di certificati, utilizzate l'operazione DeleteCertificateProvider API o il comando delete-certificate-provider CLI. Se elimini la risorsa del fornitore di certificati, il comportamento di CreateCertificateFromCsr riprenderà e AWS IoT creerà certificati firmati AWS IoT da un CSR.

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

Il comando non produce output.

Per ulteriori informazioni, consulta DeleteCertificateProvider l'AWS IoTAPI Reference.

Elenca il fornitore di certificati

Per elencare i fornitori di certificati presenti nel tuo Account AWS, usa l'operazione ListCertificateProviders API o il comando list-certificate-providers CLI.

aws iot list-certificate-providers

Quanto segue mostra 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, ListCertificateProvider consultate l'AWS IoTAPI Reference.