Scénario : Créez une instance de jumeau numérique qui utilise un certificat mTLS

Si vous recevez des données d'un appareil, vous devez utiliser l'authentification avec votre instance de jumeau numérique. Ce scénario explique comment utiliser un certificat pour authentifier une instance de jumeau numérique pour un appareil.

Mutual TLS (mTLS) est un protocole de sécurité qui garantit que le client et le serveur authentifient l'identité de l'autre lors de la communication. Contrairement au protocole TLS standard, qui authentifie uniquement le serveur, mTLS ajoute une couche de confiance en exigeant que le client et le serveur présentent des certificats valides. Sinon, si vous configurez un environnement de test, vous pouvez utiliser une clé secrète pour authentifier l'instance de jumeau numérique.
  1. Créer une clé
  2. Créer une autorité de certification
  3. Générer une nouvelle clé privée
  4. Créer un certificat géré à l'externe
  5. Créer une instance de jumeau numérique qui utilise un certificat
  6. Obtenir les détails de l'instance d'un jumeau numérique
  7. S'abonner à un sujet à l'aide de MQTTx
  8. Voir les données d'appareil dans APEX

Meilleures pratiques
  • Effectuez souvent la rotation des certificats.
  • Limiter les périodes de validité du certificat.
  • Stocker des clés privées à l'aide de chambres fortes.
  • Surveiller et vérifier les tentatives de connexion.

Avant de commencer

Assurez-vous que vous disposez des autorisations requises. Un administrateur accorde l'accès en créant les politiques requises. Pour plus d'informations, voir Préalables pour les politiques requises pour les certificats et Informations détaillées sur les politiques pour la plate-forme Internet of Things (IoT) pour les politiques requises pour les ressources IoT.

Politiques de certificat

Lorsque vous créez une instance de jumeau numérique si vous utilisez un certificat pour l'authentification, vous avez besoin de la politique suivante pour que le domaine IoT puisse lire le certificat.

Autoriser un utilisateur IoT à lire des certificats dans un compartiment spécifique pour un domaine IoT :
Allow any-user to {CERTIFICATE_BUNDLE_READ, CERTIFICATE_READ} in compartment <compartment-name> where request.principal.type = 'iotdomain'
Allow any-user to {CERTIFICATE_AUTHORITY_BUNDLE_READ, CERTIFICATE_AUTHORITY_READ} in compartment <compartment-name> where request.principal.type = 'iotdomain'
Allow any-user to {CABUNDLE_READ} in compartment <compartment-name> where request.principal.type = 'iotdomain'

Étape 1 : Créer une clé

Vous devez disposer d'une clé de chiffrement symétrique protégée par matériel existante dans Oracle Cloud Infrastructure (OCI). Pour vérifier si vous avez une clé de chiffrement principale ou pour en créer une nouvelle :

  1. Allez à Identité et sécurité, puis sélectionnez Chambre forte.
  2. Sélectionnez le compartiment à utiliser pour vos ressources IoT.
  3. Pour créer une clé, sélectionnez Créer une clé et suivez les instructions sous Création d'une clé de chiffrement principale.
  4. Ou, dans la liste Chambres fortes, sélectionnez le menu Actions à côté de la chambre forte à utiliser, puis sélectionnez Voir les détails de la chambre forte.
  5. Sélectionnez Clés de chiffrement principales pour voir les clés. Sélectionnez Voir les détails de la clé pour rechercher le mode de protection et confirmer qu'il s'agit du module de sécurité du matériel.

Étape 2 : Créer une autorité de certification

Utilisez le service de certificats pour créer une autorité de certification racine ou une autorité de certification subordonnée. Pour plus d'informations, voir Création d'une autorité de certification.

Cet exemple de tâche explique comment émettre un certificat avec une clé privée que vous gérez à l'externe à l'aide d'une autorité de certification subordonnée.

Vous devez déjà avoir une autorité de certification racine pour créer une autorité de certification subordonnée.

  1. Connectez-vous en tant qu'administrateur, avec les stratégies appropriées pour exécuter ces actions. Vous devez disposer du niveau d'accès de sécurité approprié pour créer une autorité de certification.
  2. Dans la page de liste Autorités de certification, sélectionnez Créer une autorité de certification. Si vous avez besoin d'aide pour trouver la page de liste, voir Liste des autorités de certification.
  3. Sélectionnez Compartiment, puis sélectionnez le compartiment dans lequel créer l'autorité de certification.
  4. Sous Type d'autorité de certification, sélectionnez le type Autorité de certification subordonnée : toute autorité de certification qui n'est pas l'autorité de certification racine dans une hiérarchie contenant d'autres autorités de certification.
  5. (Facultatif) Entrez un nom d'affichage unique pour l'autorité de certification. Ce nom vous aide à identifier l'AC à des fins administratives, mais il ne figure pas dans le certificat de l'AC. Évitez d'entrer des informations confidentielles.
    Note

    Deux autorités de certification d'une location ne peuvent pas partager le même nom, y compris les autorités de certification en attente de suppression.
  6. (Facultatif) Pour appliquer des marqueurs, sélectionnez Afficher les options de marquage. Pour plus d'informations sur les marqueurs, voir Marqueurs de ressource.
  7. Sélectionnez Suivant.
  8. Entrez des informations sur le sujet. Les informations sur le sujet comprennent au moins un nom commun (CN) identifiant le responsable du certificat de l'autorité de certification. Selon l'utilisation prévue du certificat, le sujet peut identifier une personne, une organisation, un point d'extrémité d'ordinateur ou un appareil. Le format des informations sur le sujet doit être conforme aux normes RFC 5280. Vous pouvez utiliser des caractères génériques pour émettre un certificat pour plusieurs noms de domaine ou de sous-domaine.
  9. Sélectionnez Suivant.
  10. Sous Configuration de l'autorité, confirmez ou sélectionnez la chambre forte qui contient la clé de chiffrement à utiliser pour le certificat de l'autorité de certification. Facultativement, sélectionnez Changer de compartiment pour spécifier un autre compartiment. Pour plus d'informations sur la création et la gestion des chambres fortes, voir Gestion des chambres fortes.
  11. Sous Clé, sélectionnez la clé dans la chambre forte à utiliser. La liste contient uniquement les clés asymétriques de la chambre forte, car le service de certificats ne prend en charge que ce type de clé. Vous pouvez sélectionner des clés Rivest-Shamir-Adleman (RSA) de 2 048 bits ou 4 096 bits. Vous pouvez également sélectionner des clés ECDSA avec l'ID courbe elliptique NIST_P384. Concrètement, seuls les types de clé asymétrique protégée par un module de sécurité matériel figurent dans la liste. Les certificats ne prennent pas en charge l'utilisation des clés protégées par le logiciel. Pour plus d'informations sur la création et la gestion des clés, voir Gestion des clés.
  12. Sous Algorithme de signature, selon la famille d'algorithmes de clé, sélectionnez l'une des options suivantes :
    • SHA256_WITH_RSA : Clé RSA avec fonction de hachage SHA-256
    • SHA384_WITH_RSA : Clé RSA avec fonction de hachage SHA-384
    • SHA512_WITH_RSA : Clé RSA avec fonction de hachage SHA-512
    • SHA256_WITH_ECDSA : Clé ECDSA avec fonction de hachage SHA-256
    • SHA384_WITH_ECDSA : Clé ECDSA avec fonction de hachage SHA-384
    • SHA512_WITH_ECDSA : Clé ECDSA avec fonction de hachage SHA-512
  13. Sélectionnez Suivant.
  14. Configurez la règle d'expiration. Sous Durée de validité maximale pour les certificats (jours), spécifiez le nombre maximal de jours pendant lesquels un certificat émis par cette autorité de certification peut être valide. Il est vivement recommandé que la période de validité n'excède pas 90 jours.
  15. Dans la page Configuration de révocation, si vous ne voulez pas configurer une liste de révocation de certificats, cochez la case Ignorer la révocation.
  16. Sélectionnez Suivant.
  17. Vérifiez que les informations sont correctes, puis sélectionnez Create Certificate Authority. La création de ressources liées aux certificats peut prendre quelques minutes.
  18. Si l'autorité de certification a été créée, les détails sommaires s'affichent.

Étape 3 : Générer une nouvelle clé privée

Créez une clé privée et une demande de signature de certificat à l'aide de OpenSSL.

Note

Pour des raisons de sécurité, envisagez d'effectuer cette étape sur l'appareil pour garder la clé privée et ne jamais la partager à l'externe.
  1. Utilisez cette commande pour générer une nouvelle clé privée private.pem et une demande de signature de certificat csr.pem avec chiffrement RSA de 2048 bits. Cet exemple montre comment utiliser le paramètre -nodes qui spécifie sans protection par mot de passe et qui utilise les extensions v3_req.
    openssl req -nodes -newkey rsa:2048 -keyout private.pem -out csr.pem -extensions v3_req
    Note

    Si vous utilisez Linux, par défaut, le fichier OpenSSL.cnf commente l'extension, par exemple, si vous voyez quelque chose comme ceci dans le fichier de configuration OpenSSL : /etc/pki/tls/openssl.cnf
     # req_extensions = v3_req # The extensions to add to a certificate request
    Supprimez ensuite # pour annuler la mise en commentaire des extensions, de sorte que le fichier ressemble à ceci :
    req_extensions = v3_req  # The extensions to add to a certificate request
    Pour vérifier que OpenSSL utilise extensions v3_req, vous pouvez vérifier que la sortie contient :
    X509v3 extensions:
        X509v3 Basic Constraints: critical
            CA:FALSE
  2. Cet exemple présente les champs d'entrée de demande de certificat et des exemples de valeurs. Entrez les données qui seront incorporées dans votre rapport de certificat, sous forme de nom distinctif (DN).

    Entrez le nom commun. Vous pouvez trouver le nom commun dans l'onglet Informations sur le sujet de la page Détails du certificat, voir l'étape 8 Créer une autorité de certification ou pour obtenir de l'aide sur la recherche de la page Détails du certificat, voir Liste des certificats :
    Country Name (2 letter code) []: US
    State or Province Name (full name) [Some-State]:
    Locality Name (eg, city) []:
    Organization Name (eg, company) []:
    Organizational Unit Name (eg, section) []:
    Common Name (Enter common name from the certificate details.) []:common-name
    Email Address [your@email.com]:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:

Étape 4 : Créer un certificat géré à l'externe

Vous pouvez générer une demande de signature de certificat et une clé privée sur le serveur sur lequel vous prévoyez d'installer le certificat, puis soumettre cette demande à une autorité de certification pour qu'elle émette un certificat, tout en gérant la clé privée à l'extérieur.

Cette tâche décrit comment émettre un certificat avec une clé privée que vous gérez à l'externe. Pour plus d'informations sur d'autres façons d'utiliser un certificat, voir Création d'un certificat à gérer à l'externe et Gestion des certificats.
  1. Dans la console, ouvrez le menu de navigation, sélectionnez Identité et sécurité.
  2. Dans la page de liste Certificats, la liste Autorité de certification d'un compartiment spécifique s'affiche.
  3. Recherchez le certificat à utiliser, sélectionnez le menu Actions à la fin de la rangée.
  4. Sélectionnez Problème de certificat.
  5. Sous Type de certificat, pour émettre un certificat à partir d'une autorité de certification du service de certificats gérée par une autorité de certification de tierce partie externe, sélectionnez Émis par une autorité de certification interne, géré à l'extérieur.
  6. Entrez un nom d'affichage unique pour le certificat. Évitez d'entrer des informations confidentielles.
    Note

    Aucun certificat de la location ne peut partager le même nom, y compris les certificats en attente de suppression.
  7. (Facultatif) Entrez une description pour faciliter l'identification du certificat. Évitez d'entrer des informations confidentielles.
  8. Pour les certificats gérés par une autorité de certification tierce, vous n'avez pas besoin de fournir des informations sur le sujet. Sélectionnez plutôt Suivant.
  9. Sous Demande de signature de certificat, fournissez le contenu du certificat en sélectionnant Charger un fichier, puis sélectionnez en sélectionner un pour charger le certificat en tant que fichier PEM.
  10. Ou sélectionnez Coller le contenu, puis sélectionnez la zone de texte pour coller le contenu du certificat directement.
  11. Sélectionnez Suivant.
  12. Vous ne pouvez pas configurer le renouvellement automatique pour les certificats que le service de certificats ne gère pas. Sélectionnez Suivant pour continuer.
  13. Vérifiez que les informations sommaires sont correctes, puis sélectionnez Créer un certificat.
  14. La page Détails du certificat s'ouvre. Sous Versions, recherchez le nom du certificat à afficher, allez au menu Actions à la fin de la rangée, sélectionnez Voir le contenu. Pour plus d'informations, voir Consultation des détails du certificat.
  15. Sélectionnez Télécharger et Enregistrer le fichier Certificat PEM.
  16. Dans la page des détails du certificat, allez à l'onglet Informations sur l'objet, copiez le nom commun du certificat à utiliser à l'étape suivante.

Étape 5 : Créer une instance de jumeau numérique qui utilise un certificat

Pour authentifier un appareil afin d'envoyer des données, vous pouvez créer une instance de jumeau numérique à l'aide du paramètre --auth-id et du paramètre <certificate-OCID> créés à l'étape précédente.

Utilisez cette commande et ces paramètres pour créer une instance de jumeau numérique. Remplacez <common-name-for-the-certificate>. Remplacez <certificate-OCID> par l'OCID du certificat pour votre environnement. Recherchez ces valeurs dans les détails du certificat. Pour plus d'informations, voir Consultation des détails du certificat :

oci iot digital-twin-instance create --iot-domain-id <iot-domain-OCID> --auth-id <certificate-OCID> --external-key <common-name-from-certificate-details>

Pour obtenir la liste complète des paramètres de l'interface de ligne de commande, voir oci iot digital-twin-instance create et voir Création d'une instance de jumeau numérique pour plus d'informations.

Étape facultative 6 : Obtenir les détails de l'instance d'un jumeau numérique

Utilisez cette commande pour voir les détails d'une instance de jumeau numérique. La réponse contient l'OCID de l'instance du jumeau numérique, l'ID authentification et la clé externe.
oci iot digital-twin-instance get --digital-twin-instance-id <digital-twin-instance-OCID>
Pour plus d'informations, voir Obtention des détails d'une instance de jumeau numérique.

Étape 7 : Envoyer les données

Selon votre scénario, vous pouvez vous connecter à l'instance de jumeau numérique à l'aide de MQTTS, HTTPS ou WebSocket. Pour plus d'exemples de scénarios, voir Connexion d'un appareil.

  • Utilisation de Curl

    interpréteurs de commandes de style POSIX : Utilisez cette commande curl lors de l'utilisation de bash, zsh, terminal macOS, Linux ou Git Bash sous Windows pour envoyer un exemple de message en texte brut pour tester la connexion. Remplacez device-cert.pem et device-key.pem par le chemin d'accès aux fichiers de votre environnement.
    curl --cert /path/device-cert.pem --key /path/device-key.pem \
    -H "Content-Type: text/plain" \
    -d "sample data 1" \
    "https://<iot-domain-short-id>.device.iot.<region>.oci.oraclecloud.com/sampletopic"

    Windows Powershell : Utilisez cette commande curl, remplacez device-cert.pem et device-key.pem par les valeurs de votre environnement.

    curl.exe --cert /path/device-cert.pem --key /path/device-key.pem \
    -H "Content-Type: text/plain" \
    -d "sample data 1" \
    "https://<iot-domain-short-id>.device.iot.<region>.oci.oraclecloud.com/sampletopic"

    Lorsque vous avez terminé l'étape 3 : Créer une instance de jumeau numérique, si vous avez défini la valeur du paramètre de clé externe avec des guillemets, vous devez inclure les guillemets lorsque vous envoyez des données : "external-key". Pour citer les meilleures pratiques, voir Dépannage.

  • Utilisez n'importe quel client MQTT pour vous abonner à un sujet en utilisant MQTTS. Cet exemple utilise MQTTx.

    Pour envoyer des données-échantillons et tester la connexion :

    1. Entrez l'hôte de l'appareil comme hôte, par exemple :
      mqtts://<domain-short-id>.device.iot.<region>.oci.oraclecloud.com
    2. Entrez le numéro de port : 8883
    3. ID client : your-client-ID
    4. Démarrage net : Vrai
    5. Activez le commutateur pour activer TLS.
    6. Sélectionnez l'option : Certificats AC ou auto-signés
    7. Entrez l'emplacement du fichier de certificat client, à partir de l'étape 15 sous Créer un certificat géré à l'externe : your-certificate.pem
    8. Entrez l'emplacement du fichier de clé client, à partir de l'étape 1 sous Générer une nouvelle clé privée : your-private-key.pem
    9. Sélectionnez Connexion.

      MQTTx

      Connectez-vous à l'aide de MQTTx.

    10. Sélectionnez Nouvel abonnement pour recevoir des données à partir d'un appareil.
    11. Entrez le point d'extrémité comme sujet.
    12. Cet exemple présente les messages publiés pour le sujet /endpoints/4321, au niveau 1 de la qualité de service (QoS). Sujet :
      {
        "pulse": 300,
        "s02": 400
      }
      {
        "test": 100
      }

      S'abonner à un sujet dans MQTTx.

Étape facultative 7 : Surveiller les données IoT dans APEX

Si vous avez configuré l'accès pour voir vos données dans APEX et que l'appareil a envoyé des données brutes, vous pouvez utiliser cet énoncé SQL pour voir la réponse des données brutes de l'instance de jumeau numérique dans APEX.
select * from <domain-short-id-from-device-host>__IOT.RAW_DATA
where digital_twin_instance_id = '<digital-twin-instance-ocid>'