Signature de certificats autogérée à l'aide d' AWS IoT Core un fournisseur de certificats - AWS IoT Core

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.

Signature de certificats autogérée à l'aide d' AWS IoT Core un 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 du provisionnement de AWS IoT flotte. Un fournisseur de certificats fait référence à une fonction Lambda et à l'API CreateCertificateFromCsr MQTT pour le provisionnement de flottes. La fonction Lambda accepte un CSR et renvoie un certificat client signé.

Lorsque vous n'avez pas de fournisseur de certificats Compte AWS, l'API CreateCertificateFromCsr MQTT est appelée lors 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 utilisent des autorités de certification privées (CA) telles que AWS Private CAd'autres autorités de certification approuvées 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 de votre certificat 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 du parc qui appelle l'API CreateCertificateFromCsr MQTT jusqu'à ce que vous supprimiez le fournisseur de certificats de votre Compte AWS.

Comment fonctionne la signature de certificats autogérés dans le cadre de l'approvisionnement de flottes

Concepts clés

Les concepts suivants fournissent des détails qui peuvent vous aider à comprendre le fonctionnement de la signature de certificats autogérés dans le cadre du provisionnement de AWS IoT flottes. Pour plus d'informations, consultez la section Provisionnement d'appareils ne disposant pas de certificats d'appareils à l'aide du provisionnement de flotte.

AWS IoT approvisionnement de flotte

Le provisionnement de AWS IoT flotte (abréviation de Fleet Provisioning) permet de AWS IoT Core générer et de délivrer 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 du parc pour connecter des appareils qui ne possèdent pas de certificat d'appareil à AWS IoT Core.

Demande de signature de certificat (CSR)

Au cours du processus de provisionnement de 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 géré est le paramètre par défaut pour la signature des certificats dans le cadre du provisionnement de flotte. Avec la signature de certificats AWS gérés, AWS IoT Core signera les CSR à l'aide de ses propres autorités de certification.

Signature de certificats autogérés dans le cadre du provisionnement de la flotte

L'autogestion est une autre option pour la signature de certificats dans le cadre de l'approvisionnement de flottes. 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 approuvée par le public ou votre propre infrastructure à clé publique (PKI).

AWS IoT Core fournisseur de certificats

AWS IoT Core un 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 autogérée de certificats dans le cadre de l'approvisionnement de flottes.

Schéma

Le schéma suivant illustre de manière simplifiée le fonctionnement de la signature automatique des certificats dans le cadre du provisionnement de AWS IoT flottes.

AWS IoT Core fournisseur de certificats pour l'approvisionnement de flottes
  • Lorsqu'un nouvel appareil IoT est fabriqué ou introduit dans le parc, il a besoin de certificats clients pour s'authentifier. AWS IoT Core

  • Dans le cadre du processus de provisionnement de la flotte, l'appareil fait une demande de certificats client via AWS IoT Core les API MQTT de provisionnement de la flotte. Cette demande inclut une demande de signature de certificat (CSR).

  • AWS IoT Core invoque 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 le provisionnement 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 cette fonction. La valeur de certificateSigningRequest est le CSR au format PEM (Privacy-Enhanced Mail) fourni dans la demande. CreateCertificateFromCsr principalIdIl s'agit de l'ID du principal utilisé pour 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, il CreateCertificateFromCsr renverra la même chose 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 AWS Private CA à 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 AWS Private CA et comment créer une autorité de certification privée, voir 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 d'objet 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 région que Compte AWS la ressource du fournisseur de certificats.

  • Le principal du AWS IoT service doit disposer de l'autorisation d'appel pour la fonction Lambda. Pour éviter toute confusion liée aux adjoints, nous vous recommandons de définir sourceArn et sourceAccount pour les autorisations d'appel. Pour plus d’informations, consultez Prévention du problème de l’adjoint confus entre services.

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

Signature de certificats autogérée pour le provisionnement de la flotte

Vous pouvez choisir la signature de certificat autogérée pour le provisionnement de la flotte à l'aide AWS CLI de ou. AWS Management Console

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 du provisionnement de flotte. AWS IoT Core invoque 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 l'CreateCertificateFromCsrAPI pour le provisionnement de la flotte changera, de sorte que tous les appels vers 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 \ --certificateProviderName my-certificate-provider \ --lambdaFunctionArn arn: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 IoTl'API.

Pour choisir la signature autogérée des certificats à l'aide de AWS Management Console, procédez comme suit :

  1. Accédez à la console AWS IoT.

  2. Dans le menu de navigation de gauche, sous Sécurité, choisissez Signature du certificat.

  3. Sur la page de signature du certificat, sous Détails de signature du certificat, choisissez Modifier la méthode de signature du certificat.

  4. Sur la page Modifier la méthode de signature du certificat, sous Méthode de signature du certificat, sélectionnez Autogéré.

  5. Dans la section Paramètres autogérés, entrez le nom du fournisseur de certificats, puis créez ou choisissez une fonction Lambda.

  6. Choisissez Mettre à jour la signature du certificat.

AWS CLI commandes pour le fournisseur de certificats

Création d'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 l'CreateCertificateFromCsrAPI pour le provisionnement de la flotte changera, de sorte que tous les appels vers 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 \ --certificateProviderName my-certificate-provider \ --lambdaFunctionArn arn: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 IoTl'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 \ --certificateProviderName my-certificate-provider \ --lambdaFunctionArn arn: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 IoTl'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 --certificateProviderName my-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 IoTl'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 AWS IoT reprendra et des certificats signés par AWS IoT un CSR seront créés.

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

Cette commande ne produit aucune sortie.

Pour plus d'informations, consultez la référence DeleteCertificateProvider de AWS IoTl'API.

Liste des fournisseurs de certificats

Pour répertorier les fournisseurs de certificats qu' Compte AWSil contient, 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 ListCertificateProviderde AWS IoTl'API.