Cloud IoT Core propose une authentification par clé privée/publique à l'aide de jetons Web JSON (JWT). Pour renforcer la sécurité, Cloud IoT Core peut comparer les certificats de clé publique de l'appareil aux certificats CA au niveau du registre.
Pour plus de sécurité, les certificats CA au niveau du registre sont facultatifs. Vous n'êtes pas obligés de les utiliser.
Un certificat validé atteste qu'une paire de clés publique/privée appartient à un appareil légitime. Cela peut être particulièrement utile lorsque le fabricant de l'appareil crée des clés publiques et privées, stocke la clé privée sur l'appareil et fait signer la clé publique par l'autorité de certification.
Générer des certificats CA
Cloud IoT Core peut comparer les certificats de clés publiques de l'appareil aux certificats CA autosignés et aux certificats CA générés par un tiers de confiance. Les deux types de certificats CA sont utilisés de la même manière, mais chacun est généré différemment.
Certificats CA autosignés | Certificats CA tiers |
---|---|
Les propriétaires des clés privées de l'appareil peuvent générer les certificats | Un tiers de confiance doit générer les certificats |
Les propriétaires de clés privées d'appareil créent et possèdent les clés privées CA qui signent les certificats. | Un tiers crée et possède les clés privées CA qui signent les certificats |
Création gratuite | Les tiers facturent pour générer des certificats et établir une chaîne de confiance avec l'autorité de certification |
Certificats CA autosignés
Pour générer un certificat CA autosigné (et la clé privée CA correspondante), procédez comme suit :
- Créez une clé privée CA. La clé privée CA sera associée de manière unique au certificat CA. Vous pouvez générer une clé privée RSA 2048 bits à l'aide de la commande suivante :
openssl genpkey -algorithm RSA -out ca_private.pem -pkeyopt rsa_keygen_bits:2048
- Générez le certificat CA autosigné. La commande suivante génère un certificat RS256 répondant aux exigences du certificat CA:
openssl req -x509 -new -nodes -key ca_private.pem -sha256 -out ca_cert.pem -subj "/CN=unused"
Consultez Générer une clé RSA avec un certificat X.509 autosigné ou Générer une clé ES256 avec un certificat X.509 autosigné pour obtenir d'autres exemples.
Certificats CA tiers
Pour obtenir un certificat CA auprès d'un tiers de confiance, envoyez une demande de signature de certificat à l'autorité de certification. L'autorité de certification vous envoie ensuite un certificat CA avec le certificat de clé publique de l'appareil correspondant, signé par la clé privée de l'autorité de certification. Pour obtenir des certificats CA tiers:
- Créez une clé privée d'appareil. Vous pouvez générer une clé privée RSA 2048 bits à l'aide de la commande suivante :
openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048
- Créez une requête de signature de certificat à partir de la clé privée d'appareil. La requête de signature de certificat conserve la clé privée secrète. La commande suivante génère une requête de signature de certificat avec une signature SHA-256 :
openssl req -new -sha256 -key rsa_private.pem -out rsa_cert.csr -subj "/CN=unused"
- Envoyez la demande de signature de certificat à une autorité de certification, puis demandez un certificat. La procédure d'inscription est différente pour chaque autorité de certification. Par exemple, vous devrez peut-être enregistrer un compte auprès de l'autorité de certification et importer la demande de signature de certificat sur un portail en ligne.
Exigences concernant les certificats CA
Tous les certificats CA au niveau du registre doivent répondre aux exigences suivantes :
- Le certificat CA doit être au format X.509v3 (RFC 5280), encodé en base64 et encapsulé dans
-----BEGIN CERTIFICATE-----
et-----END CERTIFICATE-----
. - Le certificat CA doit être un fichier
.pem
chiffré avec un algorithme compatible :- ARR d'au moins 2 048 bits
- NIST P-256
- Le certificat CA doit être valide. Si vous essayez d'ajouter un appareil à un registre et que le certificat du registre a expiré, Cloud IoT Core renvoie une erreur.
- Vous pouvez éventuellement utiliser Google Cloud CLI pour suivre le délai d'expiration d'un certificat.
Ajouter des certificats CA à un registre
Une fois que vous disposez de certificats CA, ajoutez-les à un registre. Cloud IoT Core vérifie les certificats CA au niveau du registre. Tous les certificats CA doivent donc être associés à un registre. Un certificat peut être ajouté à plusieurs registres. Vous pouvez ajouter des certificats CA à l'aide de Google Cloud Console, de l'API ou de gcloud.
Console
- Accédez à la page Registres dans Google Cloud Console.
En haut de la page, cliquez sur Créer un registre.
Cliquez sur Ajouter un certificat CA pour saisir/coller un certificat ou importer un fichier de certificat
.pem
. Vous ne pouvez ajouter qu'un seul certificat lors de la création du registre, mais vous pourrez en ajouter d'autres par la suite (10 maximum).
La page d'informations du registre d'appareils comprend un onglet Certificats qui affiche les certificats existants et vous permet d'en ajouter d'autres.
gcloud
Pour ajouter ou gérer des certificats CA, exécutez l'une des commandes gcloud iot registries credentials
.
Pour ajouter un nouveau certificat à un registre, exécutez la commande gcloud iot registries credentials create
:
gcloud iot registries credentials create \ --path=PATH_TO_CERTIFICATE \ --project=PROJECT_ID \ --registry=REGISTRY_ID \ --region=REGION
API
La ressource DeviceRegistry
comprend des champs permettant de définir des certificats CA au niveau du registre :
- Vous pouvez définir jusqu'à 10 identifiants (objets
RegistryCredential
) pour la validation des identifiants de l'appareil. - Chaque objet
RegistryCredential
comprend un objetPublicKeyCertificate
que vous pouvez utiliser pour spécifier des données de certificat, et un champ de sortie uniquement fournit des détails sur le certificat X.509.
Effet sur les appareils existants
Lorsque vous ajoutez ou supprimez des certificats, les appareils existants du registre (qu'ils soient connectés ou non) ne sont pas affectés. Si les certificats de niveau de registre associés à un appareil sont révoqués, supprimés ou modifiés, l'appareil ne peut pas utiliser les mêmes certificats de clés publiques qu'avec les certificats de niveau registre, mais il peut toujours se connecter à Cloud IoT Core via sa clé privée.
Générer des certificats de clé publique
Cloud IoT Core vérifie les certificats de clé publique de l'appareil signés par des clés privées CA.
Pour générer un certificat de clé publique signée, procédez comme suit :
- Si le registre est configuré avec un certificat CA autosigné, signez une clé publique avec la clé privée CA.
- Créez une clé privée d'appareil. Cette clé est différente du certificat CA et de la clé privée CA. Vous pouvez générer une clé privée RSA 2048 bits à l'aide de la commande suivante :
openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048
- Créez une requête de signature de certificat à partir de la clé privée d'appareil. La commande suivante génère une requête de signature de certificat avec une signature SHA-256 :
openssl req -new -sha256 -key rsa_private.pem -out rsa_cert.csr -subj "/CN=unused-device"
- Créez une clé publique et signez-la avec la clé privée CA. La commande suivante génère un certificat RS256 signé qui répond aux exigences de certificat de clé publique :
openssl x509 -req -in rsa_cert.csr -CA ca_cert.pem -CAkey ca_private.pem \ -CAcreateserial -sha256 -out rsa_cert.pem
- Créez une clé privée d'appareil. Cette clé est différente du certificat CA et de la clé privée CA. Vous pouvez générer une clé privée RSA 2048 bits à l'aide de la commande suivante :
- Si un registre est configuré avec un certificat CA tiers, le certificat CA contient un certificat de clé publique d'appareil signé par la clé privée CA. Vous pouvez extraire un certificat de clé publique d'appareil RSA à partir d'un certificat CA RSA à l'aide de la commande suivante :
openssl rsa -in ca_cert.pem -pubout -out rsa_cert.pem
Exigences concernant les certificats de clé publique
Les certificats de clés publiques d'appareils doivent répondre aux exigences suivantes (en plus des exigences standards de Cloud IoT Core pour les identifiants d'appareil) pour être validés par rapport aux certificats CA au niveau du registre :
- Le certificat CA doit être au format X.509v3 (RFC 5280), encodé en base64 et encapsulé dans
-----BEGIN CERTIFICATE-----
et-----END CERTIFICATE-----
. - Le certificat de clé publique d'appareil doit être signé par un certificat CA spécifique au niveau du registre. Les autorités de certification intermédiaires ne sont pas acceptées.
- Le certificat de clé publique d'appareil ne doit pas être identique au certificat au niveau du registre.
- Aucune clé publique brute.
- Algorithmes JWT compatibles :
- Le certificat de clé publique de l'appareil doit être valide. Si vous essayez de créer ou de mettre à jour un appareil dont le certificat a expiré, Cloud IoT Core renvoie une erreur.
- Vous pouvez éventuellement utiliser Google Cloud CLI pour suivre le délai d'expiration d'un certificat.
Ces exigences sont appliquées lorsque vous créez ou mettez à jour l'appareil. Si aucun certificat CA n'est défini pour un registre, toutes les clés publiques de l'appareil sont acceptées sans condition.
Vérifier les certificats de clé publique
Cloud IoT Core vérifie les certificats des clés publiques de l'appareil par rapport aux certificats CA au niveau du registre lorsque vous créez un appareil ou modifiez ses clés publiques. Vous pouvez créer un appareil à l'aide de Google Cloud Console, de l'API ou de gcloud. Vous pouvez ajouter, supprimer et modifier des clés publiques à l'aide de l'API ou de la console Google Cloud.
Console
- Accédez à la page Registres dans Google Cloud Console.
Cliquez sur l'ID du registre de l'appareil.
Dans le menu du registre de gauche, cliquez sur Appareils.
Cliquez sur Créer un appareil.
Pour modifier les clés publiques d'un appareil, cliquez sur son ID sur la page Appareils, puis sur Modifier l'appareil en haut de la page.
Saisissez un ID d'appareil qui décrit brièvement l'appareil ou vous aide à l'identifier. (Ce champ ne peut pas être modifié ultérieurement.) Pour en savoir plus sur les exigences concernant la taille et le nom des appareils, consultez Caractères et tailles autorisés.
Pour Communication sur l'appareil, sélectionnez Autoriser ou Bloquer. Cette option vous permet de bloquer la communication si nécessaire, par exemple lorsqu'un appareil ne fonctionne pas correctement. Dans la plupart des cas, vous souhaiterez autoriser la communication lors de la création de l'appareil.
Pour Format de clé publique, sélectionnez RS256_X509 ou ES256_X509. Collez le certificat de clé publique de l'appareil dans le champ Valeur de la clé publique. Vous pouvez également définir une date d'expiration pour la clé.
Pour ajouter une clé à un appareil existant, cliquez sur Ajouter une clé publique sur la page Détails de l'appareil.
Pour supprimer une clé d'un appareil existant, procédez comme suit :
- Cochez la case à côté de la clé sur la page Détails de l'appareil.
- Cliquez sur Supprimer pour supprimer la clé.
Pour modifier une clé, cliquez sur l'icône Modifier correspondante située sur la page Détails de l'appareil.
Sélectionnez le mode de saisie à utiliser pour saisir le certificat de clé publique de l'appareil.
- Manuel : copiez et collez le certificat de clé publique de l'appareil dans le champ Valeur de la clé publique.
- Importer : dans le champ Valeur de la clé publique, cliquez sur Parcourir pour sélectionner un fichier sur votre ordinateur.
Utilisez les champs Clé et Valeur pour ajouter des métadonnées d'appareil facultatives, telles qu'un numéro de série. Pour en savoir plus sur les règles relatives à la taille et au nom des clés-valeurs de métadonnées, consultez la section Caractères et tailles autorisés.
Sélectionnez un niveau Cloud Logging pour déterminer quels événements d'appareils sont envoyés à Cloud Logging.
Cliquez sur Créer pour créer l'appareil.
gcloud
Pour créer un appareil, exécutez la commande gcloud iot devices create
.
Pour créer un appareil avec des identifiants RS256 répondant aux exigences relatives au certificat d'appareil, exécutez la commande suivante :
gcloud iot devices create DEVICE_ID \ --project=PROJECT_ID \ --region=REGION \ --registry=REGISTRY_ID \ --public-key path=rsa_cert.pem,type=rsa-x509-pem
Pour créer un appareil avec des identifiants ES256 répondant aux exigences relatives au certificat d'appareil, exécutez la commande suivante :
gcloud iot devices create DEVICE_ID \ --project=PROJECT_ID \ --region=REGION \ --registry=REGISTRY_ID \ --public-key path=ec_cert.pem,type=es256-x509-pem
API
Utilisez les méthodes suivantes pour créer des appareils ou modifier des clés publiques :
- Méthode
create
de l'appareil pour ajouter des appareils aux registres - Méthode
patch
de l'appareil pour ajouter, supprimer ou modifier des clés publiques
Les clés publiques sont spécifiées dans le champ credentials
de la ressource Device
de l'API Cloud IoT Core. Pour en savoir plus, consultez la section DeviceCredential
dans la ressource "Appareil".
Un ou plusieurs certificats de niveau registre étant présents, la ressource Device
doit répondre aux exigences de certificat d'appareil.
- Le champ
Device.credentials[i].public_key.key
doit correspondre au contenu du certificat de clé publique de l'appareil (y compris l'en-tête et le pied de page). - Le champ
Device.credentials[i].public_key.format
doit être défini surRSA_X509_PEM
ouES256_X509_PEM
.