Scenario: creare un'istanza Digital Twin che utilizzi un certificato mTLS
Se ricevi dati da un dispositivo, devi utilizzare l'autenticazione con la tua istanza digital twin. Questo scenario spiega come utilizzare un certificato per autenticare un'istanza gemella digitale per un dispositivo.
- Crea chiave
- Crea un'autorità di certificazione
- Genera una nuova chiave privata
- Creare un certificato gestito esternamente
- Creare un'istanza digital twin che utilizza un certificato
- Ottenere i dettagli dell'istanza di un gemello digitale
- Eseguire la sottoscrizione a un argomento utilizzando MQTTx
- Visualizza dati dispositivo in APEX
- Ruota spesso i certificati.
- Limita i periodi di validità del certificato.
- Memorizzare le chiavi private utilizzando Valori predefiniti.
- Monitorare e controllare i tentativi di connessione.
Informazioni preliminari
Assicurarsi di disporre delle autorizzazioni necessarie. Un amministratore concede l'accesso creando i criteri necessari. Per ulteriori informazioni, vedere Prerequisiti per i criteri richiesti per i certificati e Dettagli dei criteri per la piattaforma Internet of Things (IoT) per i criteri richiesti per le risorse IoT.
Quando si crea un'istanza digital twin se si utilizza un certificato per l'autenticazione, è necessario disporre del criterio seguente in modo che il dominio IoT possa leggere il certificato.
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'Passo 1: creazione di una Chiave
Devi disporre di una chiave di cifratura simmetrica protetta dall'hardware esistente in Oracle Cloud Infrastructure (OCI). Per verificare se si dispone di una chiave di cifratura principale o per crearne una nuova:
- Andare a Identità e sicurezza, quindi selezionare Vault.
- Selezionare il compartimento che si desidera utilizzare per le risorse IoT.
- Per creare una chiave, selezionare Crea chiave e seguire le istruzioni in Creazione di una chiave di cifratura master.
- In alternativa, dalla lista Valori predefiniti, selezionare il menu Azioni accanto al vault che si desidera utilizzare, quindi selezionare Visualizza dettagli vault.
- Selezionare Chiavi di cifratura principali per visualizzare Chiavi. Selezionare Visualizza dettagli chiave per trovare la modalità di protezione e confermare che si tratta di HSM (Hardware Security Module).
Passo 2: Creare un'autorità di certificazione
Utilizzare il servizio Certificati per creare un'autorità di certificazione radice (CA) o una CA subordinata. Per ulteriori informazioni, vedere Creazione di un'autorità di certificazione.
Questo task di esempio spiega come emettere un certificato con una chiave privata gestita esternamente utilizzando una CA subordinata.
È necessario disporre già di una CA radice per creare una CA subordinata.
- Eseguire il login come amministratore con i criteri corretti per eseguire queste azioni. Per creare una CA, è necessario disporre del livello di accesso di sicurezza appropriato.
- Nella pagina di elenco Autorità di certificazione, selezionare Crea autorità di certificazione. Per assistenza nella ricerca della pagina di elenco, vedere Elenca autorità di certificazione.
- Selezionare Compartimento, quindi selezionare il compartimento in cui si desidera creare la CA.
- In Tipo di autorità di certificazione, selezionare il tipo Autorità di certificazione subordinata: qualsiasi CA che non sia la CA principale in una gerarchia contenente altre CA.
- (Facoltativo) Immettere un nome di visualizzazione univoco per la CA. Questo nome consente di identificare la CA per scopi amministrativi, ma non viene visualizzato come parte del certificato CA. Evitare di fornire informazioni riservate.Nota
Nessun due CA in una tenancy può condividere lo stesso nome, incluse le CA in attesa di eliminazione. - (Facoltativo) Per applicare le tag, selezionare Mostra opzioni di applicazione tag. Per ulteriori informazioni sulle tag, vedere Tag risorsa.
- Selezionare Next.
- Immettere le informazioni sull'oggetto. Le informazioni sull'oggetto includono almeno un nome comune (CN) per identificare il proprietario del certificato CA. A seconda dell'uso previsto del certificato, il soggetto potrebbe identificare una persona, un'organizzazione, un endpoint del computer o un dispositivo. Il formato delle informazioni sull'oggetto deve essere conforme agli standard RFC 5280. È possibile utilizzare i caratteri jolly per emettere un certificato per più nomi di dominio o sottodominio.
- Selezionare Next.
- In Configurazione dell'autorità, confermare o selezionare il vault contenente la chiave di cifratura che si desidera utilizzare per il certificato CA. Facoltativamente, selezionare Modifica compartimento per specificare un compartimento diverso. Per informazioni sulla creazione e la gestione dei vault, vedere Gestione dei vault.
- In Chiave, selezionare la chiave nel vault che si desidera utilizzare. L'elenco include solo le chiavi asimmetriche nel vault perché Certificates supporta solo chiavi asimmetriche. È possibile selezionare da Rivest-Shamir-Adleman (RSA) chiavi che sono 2,048 bit o 4,096 bit. È inoltre possibile selezionare chiavi ECDSA (Elliptic Curve Cryptography Digital Signature Algoritmo) con ID curva ellittica NIST_P384. In particolare, l'elenco include solo i tipi di chiavi asimmetriche protette da un modulo HSM (Hardware Security Module). I certificati non supportano l'uso di chiavi protette da software. Per ulteriori informazioni sulla creazione e la gestione delle chiavi, vedere Gestione delle chiavi.
- In Algoritmo di firma, a seconda della famiglia di algoritmi chiave, selezionare una delle seguenti opzioni:
- SHA256_WITH_RSA: chiave RSA con funzione hash SHA-256
- SHA384_WITH_RSA: chiave RSA con funzione hash SHA-384
- SHA512_WITH_RSA: chiave RSA con funzione hash SHA-512
- SHA256_WITH_ECDSA: chiave ECDSA con funzione hash SHA-256
- SHA384_WITH_ECDSA: chiave ECDSA con funzione hash SHA-384
- SHA512_WITH_ECDSA: chiave ECDSA con funzione hash SHA-512
- Selezionare Next.
- Configurare la regola di scadenza. In Durata massima validità per certificati (giorni), specificare il numero massimo di giorni di validità di un certificato emesso da questa CA. Si consiglia vivamente un periodo di validità non superiore a 90 giorni.
- Nella pagina Configurazione revoca, se non si desidera configurare un elenco di revoca dei certificati (CRL), selezionare la casella di controllo Salta revoca.
- Selezionare Next.
- Verificare che le informazioni siano corrette, quindi selezionare Crea autorità di certificazione. La creazione di risorse correlate al certificato può richiedere alcuni minuti.
- Se l'autorità di certificazione è stata creata correttamente, vengono visualizzati i dettagli di riepilogo.
Passo 3: Genera una nuova chiave privata
Creare una chiave privata e una richiesta di firma certificato (CSR, Certificate Signing Request) utilizzando OpenSSL.
Per motivi di sicurezza, si consiglia di eseguire questa operazione sul dispositivo per mantenere la chiave privata e non condividerla mai esternamente.
- Utilizzare questo comando per generare una nuova chiave privata
private.peme una richiesta di firma certificatocsr.pemcon cifratura RSA a 2048 bit. Questo esempio mostra l'uso del parametro-nodesche specifica senza protezione tramite password e utilizza le estensioniv3_req.openssl req -nodes -newkey rsa:2048 -keyout private.pem -out csr.pem -extensions v3_reqNota
Se si utilizza Linux, per impostazione predefinita il fileOpenSSL.cnfcommenta l'estensione, ad esempio se nel file di configurazioneOpenSSLviene visualizzato qualcosa del genere:/etc/pki/tls/openssl.cnf
Quindi rimuovere# req_extensions = v3_req# The extensions to add to a certificate request#per scommentare le estensioni, in modo che il file assomigli a questo:req_extensions = v3_req # The extensions to add to a certificate requestPer verificare cheOpenSSLutilizziextensions v3_req, è possibile verificare che l'output contenga:X509v3 extensions: X509v3 Basic Constraints: critical CA:FALSE Questo esempio mostra i campi di input della richiesta di certificato e i valori di esempio. Immettere le informazioni che verranno incorporate nel report del certificato come nome distinto (DN).
Immettere il nome comune. È possibile trovare il nome comune nella scheda Informazioni oggetto della pagina Dettagli certificato. Vedere il passo 8 Creazione di un'autorità di certificazione oppure per informazioni sulla ricerca della pagina dei dettagli del certificato. Vedere Elenco certificati: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 []:
Passo 4: Creare un certificato gestito esternamente
È possibile generare una richiesta di firma certificato (CSR) e una chiave privata sul server in cui si prevede di installare il certificato, quindi sottomettere tale richiesta di firma certificato a una CA per emettere un certificato, gestendo la chiave privata esternamente.
- Nella console aprire il menu di navigazione e selezionare Identità e sicurezza.
- Nella pagina elenco Certificati viene visualizzata la lista di autorità di certificazione per un compartimento specifico.
- Trovare il Certificato da utilizzare, quindi selezionare il menu Azioni alla fine della riga.
- Selezionare Certificato problema.
- In Tipo di certificato, per emettere un certificato da una CA del servizio Certificati gestita da una CA esterna di terze parti, selezionare Emesso da una CA interna, gestito esternamente.
- Inserire un nome di visualizzazione univoco per il certificato. Evitare di fornire informazioni riservate.Nota
Nessun certificato nella tenancy può condividere lo stesso nome, inclusi i certificati in attesa di eliminazione. - (Facoltativo) Immettere una descrizione che consenta di identificare il certificato. Evitare di fornire informazioni riservate.
- Per i certificati gestiti da una CA di terze parti, non è necessario fornire informazioni sull'oggetto. Selezionare invece Successivo.
- In Richiesta di firma certificato, fornire il contenuto del certificato selezionando Carica file, quindi selezionare Seleziona uno per caricare il certificato come file in formato
PEM. - In alternativa, selezionare Incolla contenuto, quindi selezionare la casella di testo per incollare direttamente il contenuto del certificato.
- Selezionare Next.
- Impossibile configurare il rinnovo automatico per i certificati non gestiti dal servizio Certificati. Selezionare Avanti per continuare.
- Verificare che le informazioni di riepilogo siano corrette, quindi selezionare Crea certificato.
- Viene visualizzata la pagina Dettagli certificato. In Versioni, trovare il nome del certificato che si desidera visualizzare, andare al menu Azioni alla fine della riga, quindi selezionare Visualizza contenuto. Per ulteriori informazioni, vedere Visualizzazione dei dettagli del certificato.
- Selezionare Scarica e Salva il file PEM certificato.
- Nella pagina dei dettagli del certificato, andare alla scheda Informazioni sull'oggetto, copiare il nome comune per il certificato da utilizzare nel passo successivo.
Passo 5: Creare un'istanza Digital Twin che utilizzi un certificato
Per autenticare un dispositivo per inviare dati, è possibile creare un'istanza gemella digitale utilizzando il parametro --auth-id e il parametro <certificate-OCID> creato nel passo precedente.
Utilizzare questo comando e parametri per creare un'istanza gemella digitale. Sostituire <common-name-for-the-certificate>. Sostituire <certificate-OCID> con l'OCID certificato per l'ambiente in uso. Trovare questi valori nei dettagli del certificato. Per ulteriori informazioni, vedere Visualizzazione dei dettagli del certificato:
oci iot digital-twin-instance create --iot-domain-id <iot-domain-OCID> --auth-id <certificate-OCID> --external-key <common-name-from-certificate-details>
Per un elenco completo dei parametri CLI, vedere oci iot digital-twin-instance create e vedere Creating a Digital Twin Instance per ulteriori informazioni.
Passo 6 opzionale: ottenere i dettagli dell'istanza di un gemello digitale
oci iot digital-twin-instance get --digital-twin-instance-id <digital-twin-instance-OCID>Passo 7: inviare i dati
A seconda dello scenario in uso, è possibile connettersi all'istanza digital twin utilizzando MQTTS, HTTPS o WebSocket. Per altri scenari di esempio, vedere Connessione di un dispositivo.
Uso di Curl
Shell in stile POSIX: utilizzare questo comandocurlquando si utilizza bash, zsh, macOS Terminal, Linux o Git Bash in Windows per inviare messaggi di testo non codificato di esempio per verificare la connessione. Sostituiredevice-cert.pemedevice-key.pemcon il percorso dei file per l'ambiente in uso.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: utilizzare questo comando
curl, sostituiredevice-cert.pemedevice-key.pemcon i valori per l'ambiente.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"Quando si completa il Passo 3: Creazione di un'istanza Digital Twin, se è stato definito il valore del parametro chiave esterna con virgolette, è necessario includere i preventivi quando si inviano i dati:
"external-key". Per informazioni sulle procedure ottimali per la presentazione dei preventivi, vedere Risoluzione dei problemi.Utilizzare qualsiasi client MQTT per eseguire la sottoscrizione a un argomento utilizzando MQTTS. In questo esempio viene utilizzato MQTTx.
Per inviare dati di esempio e testare la connessione:
- Immettere l'host del dispositivo come host, ad esempio:
mqtts://<domain-short-id>.device.iot.<region>.oci.oraclecloud.com - Immettere la porta:
8883 - ID client: your-client-ID
- Avvio pulito: Vero
- Attivare questa attivazione/disattivazione per abilitare TLS.
- Selezionare l'opzione: Certificati CA o con firma automatica
- Immettere la posizione del file del certificato client, dal passo 15 in Creazione di un certificato gestito esternamente:
your-certificate.pem - Immettere la posizione del file di chiavi del client, dal passo 1 in Genera nuova chiave privata:
your-private-key.pem - Selezionare Connetti.


- Selezionare Nuova sottoscrizione per ricevere i dati da un dispositivo.
- Immettere l'endpoint come argomento.
- Questo esempio mostra i messaggi pubblicati nell'argomento
/endpoints/4321, al livello 1 Qualità del servizio (QoS).{ "pulse": 300, "s02": 400 }{ "test": 100 }
- Immettere l'host del dispositivo come host, ad esempio:
Passo 7 facoltativo: monitorare i dati IoT in APEX
select * from <domain-short-id-from-device-host>__IOT.RAW_DATA
where digital_twin_instance_id = '<digital-twin-instance-ocid>'