Scénario : création d'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 périphérique.

Le protocole mutuel TLS (mTLS) est un protocole de sécurité qui garantit que le client et le serveur s'authentifient mutuellement lors de la communication. Contrairement à 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éation d'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é en 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 en utilisant MQTTx
  8. Afficher les données d'appareil dans APEX

Bonnes pratiques
  • Faites souvent pivoter les certificats.
  • Limiter les périodes de validité des certificats.
  • Stockez les clés privées à l'aide de Vaults.
  • Surveiller et auditer les tentatives de connexion.

Avant de commencer

Assurez-vous de disposer des droits d'accès requis. Un administrateur accorde l'accès en créant les stratégies requises. Pour plus d'informations, reportez-vous à Prérequis pour les stratégies requises pour les certificats et à Détails de stratégie pour la plate-forme Internet of Things (IoT) pour les stratégies requises pour les ressources IoT.

Stratégies 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 stratégie suivante afin que le domaine IoT puisse lire le certificat.

Laissez n'importe quel utilisateur IoT lire les 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'

Etape 1 : création d'une clé

Vous devez disposer d'une clé de cryptage symétrique protégée par le matériel existante dans Oracle Cloud Infrastructure (OCI). Pour vérifier si vous disposez d'une clé de cryptage maître ou pour en créer une :

  1. Accédez à Identité et sécurité, puis sélectionnez Coffre.
  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 de la section Création d'une clé de cryptage maître.
  4. Ou, dans la liste des coffrets, sélectionnez le menu Actions en regard du coffre à utiliser, puis sélectionnez Afficher les détails du coffre.
  5. Sélectionnez Clés de cryptage maître pour visualiser les clés. Sélectionnez Visualiser les détails de clé pour rechercher le mode de protection et vérifier qu'il s'agit d'un module HSM (Hardware Security Module).

Etape 2 : création d'une autorité de certification

Utilisez le service Certificates pour créer une autorité ou subordonnée de certification racine. Pour plus d'informations, reportez-vous à 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 en 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 effectuer ces actions. Vous devez disposer du niveau d'accès de sécurité approprié pour créer une autorité de certification.
  2. Sur 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, reportez-vous à 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'autorité de certifications à des fins d'administration, mais il n'apparaît pas dans un certificat de l'autorité de certifications. Evitez de saisir des informations confidentielles.
    Remarque

    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 balises, sélectionnez Afficher les options de balisage. Pour plus d'informations sur les balises, reportez-vous à Balises de ressource.
  7. Sélectionnez Suivant.
  8. Entrez les informations sur le sujet. Les informations sur l'objet comprennent au moins un nom commun permettant d'identificateur le propriétaire du certificat de l'autorité de certificat. Selon l'utilisation prévue du certificat, le sujet peut identifier une personne, une organisation, une adresse d'ordinateur ou un périphérique. 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 correspondant à plusieurs noms de domaine ou de sous-domaine.
  9. Sélectionnez Suivant.
  10. Sous Configuration de l'autorité, confirmez ou sélectionnez le coffre qui contient la clé de cryptage à utiliser pour le certificat d'autorité de certificat. Vous pouvez également sélectionner Modifier le compartiment pour indiquer un autre compartiment. Pour plus d'informations sur la création et la gestion des coffres, reportez-vous à Gestion des coffres.
  11. Sous Key, sélectionnez la clé du coffre à utiliser. La liste comprend uniquement les clés asymétriques du coffre car ces dernières sont les seules clés prises en charge par Certificates. Vous pouvez sélectionner parmi les clés RSA (Rivest-Shamir-Adleman) 2 048 bits ou 4 096 bits. Vous pouvez également sélectionner des clés ECDSA (algorithme des signatures numériques à courbe elliptique) avec ID de courbe elliptique NIST_P384. Plus précisément, la liste inclut uniquement les types de clé asymétrique protégée par un module de sécurité HSM. Les certificats ne prennent pas en charge l'utilisation de clés protégées par logiciel. Pour plus d'informations sur la création et la gestion des clés, reportez-vous à Gestion des clés.
  12. Sous Algorithme de signature, en fonction de la famille d'algorithmes de clé, sélectionnez l'une des options suivantes :
    • SHA256_WITH_RSA : clé RSA avec une fonction SHA-256 de hachage
    • SHA384_WITH_RSA : clé RSA avec une fonction SHA-384 de hachage
    • SHA512_WITH_RSA : clé RSA avec une fonction SHA-512 de hachage
    • SHA256_WITH_ECDSA : clé ECDSA avec une fonction SHA-256 de hachage
    • SHA384_WITH_ECDSA : clé ECDSA avec une fonction SHA-384 de hachage
    • SHA512_WITH_ECDSA : clé ECDSA avec une fonction SHA-512 de hachage
  13. Sélectionnez Suivant.
  14. Configuration de la règle d'expiration Sous Durée de validité maximum des certificats (jours), indiquez le nombre maximal de jours pendant lequel un certificat émis par l'autorité de certification peut être valide. Nous vous recommandons vivement de ne pas définir de période de validité de plus 90 jours.
  15. Sur la page Configuration de révocations, si vous ne voulez pas configurer de liste de certificats révoqués, cochez la caseIgnorer les révocations.
  16. Sélectionnez Suivant.
  17. Vérifiez que les informations sont correctes, puis cliquez sur Créer une autorité de certification. 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 récapitulatifs sont affichés.

Etape 3 : génération d'une nouvelle clé privée

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

Remarque

Pour des raisons de sécurité, envisagez d'effectuer cette étape sur l'appareil afin de préserver la confidentialité de la clé et de ne jamais la partager en 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 cryptage RSA 2048 bits. Cet exemple montre comment utiliser le paramètre -nodes qui spécifie sans protection par mot de passe et utilise les extensions v3_req.
    openssl req -nodes -newkey rsa:2048 -keyout private.pem -out csr.pem -extensions v3_req
    Remarque

    Si vous utilisez Linux, par défaut, le fichier OpenSSL.cnf met en commentaire l'extension, par exemple, si le fichier de configuration OpenSSL contient un élément semblable au suivant : /etc/pki/tls/openssl.cnf
     # req_extensions = v3_req # The extensions to add to a certificate request
    Supprimez ensuite le fichier # pour supprimer les extensions du commentaire. Le fichier se présente ainsi :
    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 montre les champs d'entrée de demande de certificat et des exemples de valeurs. Entrez les informations qui seront incorporées dans votre rapport de certificat, en tant que nom distinctif (DN).

    Entrez le nom commun. Vous pouvez trouver le nom courant dans l'onglet Informations sur le sujet de la page de détails Certificat. Reportez-vous à l'étape 8 Création d'une autorité de certification ou pour obtenir de l'aide sur la page de détails du certificat, reportez-vous à 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 []:

Etape 4 : création d'un certificat géré en externe

Vous pouvez générer une requête de signature de certificat (CSR, Certificate Signing Request) et un clé privée sur le serveur sur lequel vous prévenez d'installer le certificat, puis soumettre ce CSR à une Autorité de certification pour émettre un certificat tout en gérant la clé privée en interne.

Cette tâche explique comment émettre un certificat avec une clé privée que vous gérez en externe. Pour plus d'informations sur les autres méthodes d'utilisation d'un certificat, reportez-vous aux sections Creating a Certificate to Manage Externally et Managing Certificates.
  1. Dans la console, ouvrez le menu de navigation, puis sélectionnez Identité et sécurité.
  2. Sur la page de liste Certificats, la liste de l'autorité de certification d'un compartiment spécifique est affichée.
  3. Recherchez le certificat à utiliser, puis sélectionnez le menu Actions à la fin de la ligne.
  4. Sélectionnez Problème de certificat.
  5. Sous Type de chèque-cadeau, pour émettre un certificat à partir d'une Autorité de certification de service Certificates gérée par une Autorité de certification tierce externe, sélectionnez Emis par l'autorité de certification interne, gérée en externe.
  6. Entrez un nom d'affichage unique pour le certificat. Evitez de saisir des informations confidentielles.
    Remarque

    Deux certificats de la location ne peuvent pas partager le même nom, y compris les certificats en attente de suppression.
  7. (Facultatif) Saisissez une description pour permettre d'identifier plus facilement le certificat. Evitez de saisir 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. A la place, sélectionnez Suivant.
  9. Sous Demande de signature de certificat, indiquez le contenu du certificat en sélectionnant Télécharger le fichier, puis sélectionnez Sélectionner un élément pour charger le certificat en tant que fichier au format PEM.
  10. Vous pouvez également sélectionner Coller le contenu, puis sélectionner la zone de texte pour coller directement le contenu du certificat.
  11. Sélectionnez Suivant.
  12. Vous ne pouvez pas configurer le renouvellement automatique pour les certificats que le service Certificates ne gère pas. Sélectionnez Next pour continuer.
  13. Vérifiez que les informations récapitulatives 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, accédez au menu Actions à la fin de la ligne, puis sélectionnez Afficher le contenu. Pour plus d'informations, reportez-vous à Affichage des détails d'un certificat.
  15. Sélectionnez Télécharger et Enregistrer le fichier PEM de certificat.
  16. Sur la page de détails du certificat, accédez à l'onglet Informations sur l'objet, copiez le nom commun du certificat à utiliser à l'étape suivante.

Etape 5 : création d'une instance de jumeau numérique qui utilise un certificat

Pour authentifier un dispositif 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 de certificat de votre environnement. Recherchez ces valeurs dans les détails du certificat. Pour plus d'informations, reportez-vous à Affichage des détails d'un 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 d'interface de ligne de commande, reportez-vous à oci iot digital-twin-instance create et à Création d'une instance de jumeau numérique pour plus d'informations.

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

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

Etape 7 : Envoyer des 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énario, reportez-vous à Connexion d'un appareil.

  • Utiliser Curl

    Shells de type POSIX : utilisez cette commande curl lorsque vous utilisez bash, zsh, macOS Terminal, Linux ou Git Bash sous Windows pour envoyer un exemple de message en texte brut, testez 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éation d'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 les données : "external-key". Pour citer les meilleures pratiques, reportez-vous à Dépannage.

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

    Pour envoyer des exemples de données et tester la connexion :

    1. Entrez l'hôte du périphérique en tant qu'hôte, par exemple :
      mqtts://<domain-short-id>.device.iot.<region>.oci.oraclecloud.com
    2. Entrez le port : 8883
    3. ID client : votre-client-ID
    4. Clean Start : Vrai
    5. Activez la bascule pour activer TLS.
    6. Sélectionnez l'option : CA ou certificats auto-signés
    7. Entrez l'emplacement du fichier de certificat client, à partir de l'étape 15 dans Création d'un certificat géré en externe : your-certificate.pem
    8. Entrez l'emplacement du fichier de clés client, à partir de l'étape 1 dans 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 les données d'un appareil.
    11. Entrez l'adresse en tant que sujet.
    12. Cet exemple montre les messages publiés sur la rubrique /endpoints/4321, au niveau 1 de la qualité de service (QoS).
      {
        "pulse": 300,
        "s02": 400
      }
      {
        "test": 100
      }

      Abonnez-vous à un thème dans MQTTx.

Etape facultative 7 : surveillance des données IoT dans APEX

Si vous avez configuré l'accès pour visualiser vos données dans APEX et que l'appareil a envoyé des données brutes, vous pouvez utiliser cette instruction SQL pour afficher la réponse de données brutes d'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>'