Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Self-managed signature de certificat à l'aide de AWS IoT Core fournisseur de certificats
Vous pouvez créer un fournisseur de AWS IoT Core certificats pour signer les demandes de signature de certificats (CSR) dans le cadre de l'approvisionnement de AWS IoT la flotte. Un fournisseur de certificats fait référence à une fonction Lambda et à l'API CreateCertificateFromCsr MQTT pour l'approvisionnement de la flotte. La fonction Lambda accepte un CSR et renvoie un certificat client signé.
Lorsque vous n'avez pas de fournisseur de certificat chez vous Compte AWS, l'API CreateCertificateFromCsr MQTT est appelée dans le cadre du provisionnement de la flotte pour générer le certificat à partir d'un CSR. Une fois que vous avez créé un fournisseur de certificats, le comportement de l'API CreateCertificateFromCsr MQTT changera et tous les appels à cette API MQTT appelleront le fournisseur de certificats pour émettre le certificat.
Avec le fournisseur de AWS IoT Core certificats, vous pouvez mettre en œuvre des solutions qui font appel à des autorités de certification (CA) privées CA privée AWS, telles que d'autres autorités de certification reconnues par le public, ou à votre propre infrastructure à clé publique (PKI) pour signer le CSR. En outre, vous pouvez utiliser le fournisseur de certificats pour personnaliser les champs du certificat de votre client, tels que les périodes de validité, les algorithmes de signature, les émetteurs et les extensions.
Important
Vous ne pouvez créer qu'un seul fournisseur de certificats par Compte AWS. Le changement de comportement de signature s'applique à l'ensemble de la flotte qui appelle l'API CreateCertificateFromCsr MQTT jusqu'à ce que vous supprimiez le fournisseur de certificats de votre Compte AWS.
Dans cette rubrique :
Comment fonctionne la signature de certificats autogérée dans le cadre de l'approvisionnement de la flotte
Concepts clés
Les concepts suivants fournissent des détails qui peuvent vous aider à comprendre comment fonctionne la signature de certificats autogérée dans le cadre de l'approvisionnement de AWS IoT flotte. Pour plus d'informations, consultez la section Approvisionnement d'appareils ne disposant pas de certificats d'appareils à l'aide du provisionnement de flotte.
- AWS IoT approvisionnement de la flotte
-
Avec AWS IoT Fleet Provisioning (abréviation de Fleet Provisioning), vous AWS IoT Core générez et délivrez en toute sécurité des certificats d'appareils à vos appareils lorsqu'ils se connectent AWS IoT Core pour la première fois. Vous pouvez utiliser le provisionnement de flotte pour connecter des appareils qui ne disposent pas de certificats d' AWS IoT Core appareils.
- Demande de signature de certificat (CSR)
-
Au cours du processus d'approvisionnement de la flotte, un appareil envoie une demande AWS IoT Core via les API MQTT de provisionnement de flotte. Cette demande inclut une demande de signature de certificat (CSR), qui sera signée pour créer un certificat client.
- AWS signature de certificats gérés dans le cadre de l'approvisionnement de la flotte
-
AWS managed est le paramètre par défaut pour la signature des certificats dans le provisionnement de flotte. Avec la signature de certificats AWS gérée, AWS IoT Core signera les CSR à l'aide de ses propres autorités de certification.
- Self-managed signature de certificats pour l'approvisionnement de la flotte
-
Self-managed est une autre option pour la signature de certificats dans le cadre de l'approvisionnement de la flotte. Avec la signature de certificats autogérée, vous créez un fournisseur de AWS IoT Core certificats pour signer les CSR. Vous pouvez utiliser la signature de certificats autogérée pour signer des CSR avec une autorité de certification générée par une autorité de certification AWS privée, une autre autorité de certification publique ou votre propre infrastructure à clé publique (PKI).
- AWS IoT Core fournisseur de certificats
-
AWS IoT Core le fournisseur de certificats (abréviation de fournisseur de certificats) est une ressource gérée par le client qui est utilisée pour la signature de certificats autogérés dans le cadre du provisionnement de flotte.
Schéma
Le schéma suivant est une illustration simplifiée du fonctionnement de la signature automatique des certificats dans le cadre de l'approvisionnement de AWS IoT la flotte.
-
Lorsqu'un nouvel appareil IoT est fabriqué ou introduit dans la flotte, il a besoin de certificats clients pour s'authentifier. AWS IoT Core
-
Dans le cadre du processus d'approvisionnement de la flotte, l'appareil demande des certificats clients via AWS IoT Core les API MQTT de provisionnement de flotte. Cette demande inclut une demande de signature de certificat (CSR).
-
AWS IoT Core appelle le fournisseur de certificats et transmet le CSR en entrée au fournisseur.
-
Le fournisseur de certificats prend le CSR en entrée et émet un certificat client.
Pour la signature de certificats AWS gérés, AWS IoT Core signe le CSR à l'aide de sa propre autorité de certification et émet un certificat client.
-
Avec le certificat client émis, l'appareil poursuivra l'approvisionnement de la flotte et établira une connexion sécurisée avec AWS IoT Core.
Entrée de la fonction Lambda du fournisseur de certificats
AWS IoT Core envoie l'objet suivant à la fonction Lambda lorsqu'un appareil s'enregistre auprès de celle-ci. La valeur de certificateSigningRequest est le format CSR in Privacy-Enhanced Mail (PEM) fourni dans la CreateCertificateFromCsr demande. principalIdIl s'agit de l'identifiant du principal auquel se connecter AWS IoT Core lors de la CreateCertificateFromCsr demande. clientIdest l'ID client défini pour la connexion MQTT.
{ "certificateSigningRequest": "string", "principalId": "string", "clientId": "string" }
Valeur renvoyée par la fonction Lambda du fournisseur de certificats
La fonction Lambda doit renvoyer une réponse contenant la certificatePem valeur. Voici un exemple de réponse réussie. AWS IoT Core utilisera la valeur de retour (certificatePem) pour créer le certificat.
{ "certificatePem": "string" }
Si l'enregistrement est réussi, la même information CreateCertificateFromCsr sera renvoyée certificatePem dans la CreateCertificateFromCsr réponse. Pour plus d'informations, consultez l'exemple de charge utile de réponse de CreateCertificateFromCsr.
Exemple de fonction Lambda
Avant de créer un fournisseur de certificats, vous devez créer une fonction Lambda pour signer un CSR. Voici un exemple de fonction Lambda en Python. Cette fonction appelle CA privée AWS
à signer le CSR d'entrée, à l'aide d'une autorité de certification privée et de l'algorithme de SHA256WITHRSA signature. Le certificat client retourné sera valide pendant un an. Pour plus d'informations sur CA privée AWS et comment créer une autorité de certification privée, consultez Qu'est-ce qu'une autorité de certification AWS privée ? et Création d'une autorité de certification privée.
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 }
Important
-
Les certificats renvoyés par la fonction Lambda doivent avoir le même nom de sujet et la même clé publique que la demande de signature de certificat (CSR).
-
La fonction Lambda doit s'exécuter dans 5 secondes.
-
La fonction Lambda doit se trouver dans la même Compte AWS région que la ressource du fournisseur de certificats.
-
Le principal AWS IoT de service doit disposer de l'autorisation d'invocation de la fonction Lambda. Pour éviter tout problème de confusion entre les sous-ministres, nous vous recommandons de définir
sourceArnetsourceAccountpour les autorisations d'invocation. Pour plus d'informations, voir Prévention des adjoints Cross-service confus.
L'exemple de politique basée sur les ressources suivant pour Lambda accorde AWS IoT l'autorisation d'invoquer la fonction 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 signature de certificats pour l'approvisionnement de la flotte
Vous pouvez choisir la signature de certificats autogérée pour l'approvisionnement de la flotte à l'aide AWS CLI de ou. Console de gestion AWS
Pour choisir la signature de certificats autogérée, vous devez créer un fournisseur de AWS IoT Core
certificats pour signer les CSR dans le cadre de l'approvisionnement de flotte. AWS IoT Core appelle le fournisseur de certificats, qui prend un CSR en entrée et renvoie un certificat client. Pour créer un fournisseur de certificats, utilisez l'opération CreateCertificateProvider API ou la commande create-certificate-provider CLI.
Note
Une fois que vous avez créé un fournisseur de certificats, le comportement de CreateCertificateFromCsr l'API pour le provisionnement de la flotte changera de sorte que tous les appels à CreateCertificateFromCsr invoqueront le fournisseur de certificats pour créer les certificats. La modification de ce comportement peut prendre quelques minutes après la création d'un fournisseur de certificats.
aws iot create-certificate-provider \ --certificateProviderNamemy-certificate-provider\ --lambdaFunctionArnarn:aws:lambda:us-east-1:123456789012:function:my-function-1\ --accountDefaultForOperations CreateCertificateFromCsr
Voici un exemple de sortie pour cette commande :
{ "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" }
Pour plus d'informations, consultez la référence CreateCertificateProvider de AWS IoT l'API.
Pour choisir la signature de certificats autogérée à l'aide de Console de gestion AWS, procédez comme suit :
-
Accédez à la console AWS IoT
. -
Dans la barre de navigation de gauche, sous Sécurité, sélectionnez Signature de certificat.
-
Sur la page de signature du certificat, sous Détails de signature du certificat, choisissez Modifier la méthode de signature du certificat.
-
Sur la page Modifier la méthode de signature du certificat, sous Méthode de signature du certificat, choisissez Self-managed.
-
Dans la section des Self-managed paramètres, entrez le nom du fournisseur de certificat, puis créez ou choisissez une fonction Lambda.
-
Choisissez Mise à jour de la signature du certificat.
AWS CLI commandes pour le fournisseur de certificats
Créer un fournisseur de certificats
Pour créer un fournisseur de certificats, utilisez l'opération CreateCertificateProvider API ou la commande create-certificate-provider CLI.
Note
Une fois que vous avez créé un fournisseur de certificats, le comportement de CreateCertificateFromCsr l'API pour le provisionnement de la flotte changera de sorte que tous les appels à CreateCertificateFromCsr invoqueront le fournisseur de certificats pour créer les certificats. La modification de ce comportement peut prendre quelques minutes après la création d'un fournisseur de certificats.
aws iot create-certificate-provider \ --certificateProviderNamemy-certificate-provider\ --lambdaFunctionArnarn:aws:lambda:us-east-1:123456789012:function:my-function-1\ --accountDefaultForOperations CreateCertificateFromCsr
Voici un exemple de sortie pour cette commande :
{ "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" }
Pour plus d'informations, consultez la référence CreateCertificateProvider de AWS IoT l'API.
Mettre à jour le fournisseur de certificats
Pour mettre à jour un fournisseur de certificats, utilisez l'opération UpdateCertificateProvider API ou la commande update-certificate-provider CLI.
aws iot update-certificate-provider \ --certificateProviderNamemy-certificate-provider\ --lambdaFunctionArnarn:aws:lambda:us-east-1:123456789012:function:my-function-2\ --accountDefaultForOperations CreateCertificateFromCsr
Voici un exemple de sortie pour cette commande :
{ "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" }
Pour plus d'informations, consultez la référence UpdateCertificateProvider de AWS IoT l'API.
Décrire le fournisseur de certificats
Pour décrire un fournisseur de certificats, utilisez l'opération DescribeCertificateProvider API ou la commande describe-certificate-provider CLI.
aws iot describe-certificate-provider --certificateProviderNamemy-certificate-provider
Voici un exemple de sortie pour cette commande :
{ "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" }
Pour plus d'informations, consultez la référence DescribeCertificateProvider de AWS IoT l'API.
Supprimer le fournisseur de certificats
Pour supprimer un fournisseur de certificats, utilisez l'opération DeleteCertificateProvider API ou la commande delete-certificate-provider CLI. Si vous supprimez la ressource du fournisseur de certificats, le comportement de CreateCertificateFromCsr celui-ci AWS IoT reprendra et des certificats signés par AWS IoT un CSR seront créés.
aws iot delete-certificate-provider --certificateProviderNamemy-certificate-provider
Cette commande ne produit aucune sortie.
Pour plus d'informations, consultez la référence DeleteCertificateProvider de AWS IoT l'API.
Liste des fournisseurs de certificats
Pour répertorier les fournisseurs de certificats de votre Compte AWS système, utilisez l'opération ListCertificateProviders API ou la commande list-certificate-providers CLI.
aws iot list-certificate-providers
Voici un exemple de sortie pour cette commande :
{ "certificateProviders": [ { "certificateProviderName": "my-certificate-provider", "certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider" } ] }
Pour plus d'informations, consultez la référence ListCertificateProvider de AWS IoT l'API.