Share via


Certificati X.509

I certificati X.509 sono documenti digitali che rappresentano un utente, un computer, un servizio o un dispositivo. Un'autorità di certificazione (CA), una CA subordinata o un'autorità di registrazione rilascia certificati X.509. I certificati contengono la chiave pubblica dell'oggetto del certificato. Non contengono la chiave privata dell'oggetto, che deve essere archiviata in modo sicuro. RFC 5280 documenta i certificati a chiave pubblica, inclusi i campi e le estensioni. I certificati a chiave pubblica sono firmati digitalmente e in genere contengono le informazioni seguenti:

  • Informazioni sull'oggetto del certificato
  • Chiave pubblica che corrisponde alla chiave privata dell'oggetto
  • Informazioni sulla CA emittente
  • Algoritmi di crittografia e/o firma digitale supportati
  • Informazioni per determinare lo stato di revoca e validità del certificato

Campi del certificato

Sono disponibili tre versioni incrementali dello standard del certificato X.509 e ogni versione successiva ha aggiunto i campi certificato allo standard:

  • La versione 1 (v1), pubblicata nel 1988, segue lo standard X.509 iniziale per i certificati.
  • La versione 2 (v2), pubblicata nel 1993, aggiunge due campi ai campi inclusi nella versione 1.
  • La versione 3 (v3), pubblicata nel 2008, rappresenta la versione corrente dello standard X.509. Questa versione aggiunge il supporto per le estensioni del certificato.

Questa sezione è un riferimento generale per i campi certificato e le estensioni del certificato disponibili nei certificati X.509. Per altre informazioni sui campi certificato e sulle estensioni del certificato, inclusi tipi di dati, vincoli e altri dettagli, vedere la specifica RFC 5280 .

Campi della versione 1

La tabella seguente descrive i campi certificato versione 1 per i certificati X.509. Tutti i campi inclusi in questa tabella sono disponibili nelle versioni successive dei certificati X.509.

Nome Descrizione
Versione Intero che identifica il numero di versione del certificato.
Numero di serie Intero che rappresenta il numero univoco per ogni certificato emesso da un'autorità di certificazione (CA).
Firma Identificatore dell'algoritmo di crittografia usato dalla CA per firmare il certificato. Il valore include sia l'identificatore dell'algoritmo che tutti i parametri facoltativi utilizzati da tale algoritmo, se applicabile.
Issuer Nome distinto (DN) della CA emittente del certificato.
Validità Periodo di tempo inclusivo per il quale il certificato è valido.
Oggetto Nome distinto (DN) dell'oggetto del certificato.
Informazioni sulla chiave pubblica dell'oggetto Chiave pubblica di proprietà dell'oggetto del certificato.

Campi della versione 2

Nella tabella seguente vengono descritti i campi aggiunti per la versione 2, contenenti informazioni sull'autorità emittente del certificato. Questi campi, tuttavia, vengono usati raramente. Tutti i campi inclusi in questa tabella sono disponibili nelle versioni successive dei certificati X.509.

Nome Descrizione
ID univoco autorità di certificazione Identificatore univoco che rappresenta la CA emittente, come definito dalla CA emittente.
ID univoco soggetto Identificatore univoco che rappresenta l'oggetto del certificato, come definito dalla CA emittente.

Campi versione 3

Nella tabella seguente viene descritto il campo aggiunto per la versione 3, che rappresenta una raccolta di estensioni del certificato X.509.

Nome Descrizione
Estensioni Raccolta di estensioni di certificato standard e specifiche di Internet. Per altre informazioni sulle estensioni del certificato disponibili per i certificati X.509 v3, vedere Estensioni del certificato.

Estensioni del certificato

Le estensioni del certificato, introdotte con la versione 3, forniscono metodi per associare più attributi a utenti o chiavi pubbliche e per la gestione delle relazioni tra le autorità di certificazione. Per altre informazioni sulle estensioni del certificato, vedere la sezione Estensioni certificato della specifica RFC 5280 .

Estensioni standard

Lo standard X.509 definisce le estensioni incluse in questa sezione, da usare nell'infrastruttura a chiave pubblica (PKI) Internet.

Nome Descrizione
Identificatore di chiave dell'autorità Identificatore che rappresenta l'oggetto del certificato e il numero di serie del certificato CA che ha emesso questo certificato o un hash della chiave pubblica della CA emittente.
Identificatore della chiave del soggetto Hash della chiave pubblica del certificato corrente.
Utilizzo delle chiavi Valore bitmap che definisce i servizi per i quali è possibile usare un certificato.
Periodo di uso della chiave privata Periodo di validità per la parte della chiave privata di una coppia di chiavi.
Criteri certificato Raccolta di informazioni sui criteri, utilizzata per convalidare l'oggetto del certificato.
Mapping dei criteri Raccolta di mapping dei criteri, ognuno dei quali esegue il mapping di un criterio in un'organizzazione ai criteri in un'altra organizzazione.
Nome alternativo del soggetto Raccolta di nomi alternativi per l'oggetto.
Nome alternativo dell'autorità di certificazione Raccolta di nomi alternativi per la CA emittente.
Attributi di directory del soggetto Raccolta di attributi da una directory X.500 o LDAP.
Limitazioni di base Raccolta di vincoli che consentono al certificato di designare se viene emesso a una CA o a un utente, un computer, un dispositivo o un servizio. Questa estensione include anche un vincolo di lunghezza del percorso che limita il numero di ca subordinate che possono esistere.
Vincoli dei nomi Raccolta di vincoli che definiscono gli spazi dei nomi consentiti in un certificato rilasciato dalla CA.
Vincoli dei criteri Raccolta di vincoli che possono essere usati per impedire i mapping dei criteri tra ca.
Utilizzo chiavi esteso Raccolta di valori di scopo chiave che indicano come usare la chiave pubblica di un certificato, oltre gli scopi identificati nell'estensione Utilizzo chiavi .
Punti di distribuzione CRL Raccolta di URL in cui viene pubblicato l'elenco di revoche di certificati di base( CRL).
Inibire anyPolicy Impedisce l'uso dell'OID Tutti i criteri di rilascio (2.5.29.32.0) nei certificati CA subordinati
CRL più aggiornato Questa estensione, nota anche come punto di distribuzione Delta CRL, contiene uno o più URL in cui viene pubblicato il CRL delta della CA emittente.

Estensioni Internet private

Le estensioni incluse in questa sezione sono simili alle estensioni standard e possono essere usate per indirizzare le applicazioni alle informazioni online sull'oggetto ca o certificato emittente.

Nome Descrizione
Accesso alle informazioni sull'autorità Raccolta di voci che descrivono il formato e la posizione di informazioni aggiuntive fornite dalla CA emittente.
Accesso alle informazioni sull'oggetto Raccolta di voci che descrivono il formato e la posizione di informazioni aggiuntive fornite dall'oggetto del certificato.

Formati dei certificati

I certificati possono essere salvati in vari formati. hub IoT di Azure'autenticazione in genere usa i formati di Privacy-Enhanced posta elettronica (PEM) e Personal Information Exchange (PFX). La tabella seguente descrive i file e i formati usati comunemente per rappresentare i certificati.

Formato Descrizione
Certificato binario Certificato binario del modulo non elaborato usando Distinguished Encoding Rules la codifica ASN.1 (DER).
Formato PEM ASCII Un file di certificato PEM (con estensione pem) contiene un certificato con codifica Base64 a partire da e terminando -----BEGIN CERTIFICATE----- con -----END CERTIFICATE-----. Uno dei formati più comuni per i certificati X.509, il formato PEM è richiesto da hub IoT durante il caricamento di determinati certificati, ad esempio i certificati del dispositivo.
Chiave PEM ASCII Contiene una chiave DER con codifica Base64, facoltativamente con altri metadati sull'algoritmo usato per la protezione delle password.
Certificato PKCS #7 Formato progettato per il trasporto di dati firmati o crittografati. Può includere l'intera catena di certificati. RFC 2315 definisce questo formato.
Chiave PKCS #8 Formato per un archivio chiavi privato. RFC 5208 definisce questo formato.
PKCS #12 chiave e certificato Formato complesso che può archiviare e proteggere una chiave e l'intera catena di certificati. Viene comunemente usato con un'estensione .p12 o .pfx. PKCS #12 è sinonimo del formato PFX. RFC 7292 definisce questo formato.

Certificati autofirmati

È possibile autenticare un dispositivo nell'hub IoT a scopo di test usando due certificati autofirmato. Questo tipo di autenticazione viene talvolta chiamato autenticazione identificazione personale perché i certificati vengono identificati dai valori hash calcolati denominati impronte digitali o identificazioni personali. Questi valori hash calcolati vengono usati da hub IoT per autenticare i dispositivi.

Importante

È consigliabile usare i certificati firmati da un'autorità di certificazione (CA), anche a scopo di test. Non usare mai certificati autofirmato nell'ambiente di produzione.

Creare un certificato autofirmato

È possibile usare OpenSSL per creare certificati autofirmato. I passaggi seguenti illustrano come eseguire comandi OpenSSL in una shell bash per creare un certificato autofirmato e recuperare un'impronta digitale del certificato che può essere usata per autenticare il dispositivo in hub IoT.

Nota

Se si vogliono usare certificati autofirmato per il test, è necessario creare due certificati per ogni dispositivo.

  1. Eseguire il comando seguente per generare una chiave privata e creare un file con chiave privata con codifica PEM (.key), sostituendo i segnaposto seguenti con i relativi valori corrispondenti. La chiave privata generata dal comando seguente usa l'algoritmo RSA con crittografia a 2048 bit.

    {KeyFile}. Nome del file di chiave privata.

    openssl genpkey -out {KeyFile} -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
  2. Eseguire il comando seguente per generare una richiesta di firma del certificato PKCS #10 (CSR) e creare un file CSR (.csr), sostituendo i segnaposto seguenti con i relativi valori corrispondenti. Assicurarsi di specificare l'ID dispositivo del dispositivo IoT per il certificato autofirmato quando richiesto.

    {KeyFile}. Nome del file di chiave privata.

    {CsrFile}. Nome del file CSR.

    {DeviceID}. Nome del dispositivo IoT.

    openssl req -new -key {KeyFile} -out {CsrFile}
    
    Country Name (2 letter code) [XX]:.
    State or Province Name (full name) []:.
    Locality Name (eg, city) [Default City]:.
    Organization Name (eg, company) [Default Company Ltd]:.
    Organizational Unit Name (eg, section) []:.
    Common Name (eg, your name or your server hostname) []:{DeviceID}
    Email Address []:.
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:.
    An optional company name []:.
    
  3. Eseguire il comando seguente per esaminare e verificare la csr, sostituendo i segnaposto seguenti con i relativi valori corrispondenti.

    {CsrFile}. Nome del file di certificato.

    openssl req -text -in {CsrFile} -verify -noout
    
  4. Eseguire il comando seguente per generare un certificato autofirmato e creare un file di certificato con codifica PEM (.crt), sostituendo i segnaposto seguenti con i relativi valori corrispondenti. Il comando converte e firma la csr con la chiave privata, generando un certificato autofirmato che scade in 365 giorni.

    {KeyFile}. Nome del file di chiave privata.

    {CsrFile}. Nome del file CSR.

    {CrtFile}. Nome del file di certificato.

    openssl x509 -req -days 365 -in {CsrFile} -signkey {KeyFile} -out {CrtFile}
    
  5. Eseguire il comando seguente per recuperare l'impronta digitale del certificato, sostituendo i segnaposto seguenti con i relativi valori corrispondenti. L'impronta digitale di un certificato è un valore hash calcolato univoco per tale certificato. È necessaria l'impronta digitale per configurare il dispositivo IoT in hub IoT per i test.

    {CrtFile}. Nome del file di certificato.

    openssl x509 -in {CrtFile} -noout -fingerprint
    

Verificare il certificato manualmente dopo il caricamento

Quando si carica il certificato dell'autorità di certificazione radice (CA) o il certificato CA subordinato nell'hub IoT, è possibile scegliere di verificare automaticamente il certificato. Se non è stato scelto di verificare automaticamente il certificato durante il caricamento, il certificato viene visualizzato con il relativo stato impostato su Annulla verifica. È necessario eseguire la procedura seguente per verificare manualmente il certificato.

  1. Selezionare il certificato per visualizzare la finestra di dialogo Dettagli certificato .

  2. Selezionare Genera codice di verifica nella finestra di dialogo.

    Screenshot che mostra la finestra di dialogo Dettagli certificato.

  3. Copiare il codice di verifica negli Appunti. È necessario usare questo codice di verifica come soggetto del certificato nei passaggi successivi. Ad esempio, se il codice di verifica è 75B86466DA34D2B04C0C4C9557A119687ADAE7D4732BDDB3, aggiungere che come oggetto del certificato, come illustrato nel passaggio successivo.

  4. Esistono tre modi per generare un certificato di verifica:

    • Se si usa lo script di PowerShell fornito da Microsoft, eseguire New-CACertsVerificationCert "<verification code>" per creare un certificato denominato VerifyCert4.cer, sostituendo <verification code> con il codice di verifica generato in precedenza. Per altre informazioni, vedere Gestione dei certificati ca di test per esempi ed esercitazioni nel repository GitHub per il hub IoT di Azure Device SDK per C.

    • Se si usa lo script Bash fornito da Microsoft, eseguire ./certGen.sh create_verification_certificate "<verification code>" per creare un certificato denominato verification-code.cert.pem, sostituendo <verification code> con il codice di verifica generato in precedenza. Per altre informazioni, vedere Gestione dei certificati CA di test per esempi ed esercitazioni nel repository GitHub per il hub IoT di Azure Device SDK per C.

    • Se si usa OpenSSL per generare i certificati, è prima necessario generare una chiave privata, quindi generare un file di richiesta di firma del certificato (CSR). Nell'esempio seguente sostituire <verification code> con il codice di verifica generato in precedenza:

    openssl genpkey -out pop.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
    openssl req -new -key pop.key -out pop.csr
    
    -----
    Country Name (2 letter code) [XX]:.
    State or Province Name (full name) []:.
    Locality Name (eg, city) [Default City]:.
    Organization Name (eg, company) [Default Company Ltd]:.
    Organizational Unit Name (eg, section) []:.
    Common Name (eg, your name or your server hostname) []:<verification code>
    Email Address []:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    

    Creare quindi un certificato usando il file di configurazione appropriato per la CA radice o la CA subordinata e il file CSR. Nell'esempio seguente viene illustrato come usare OpenSSL per creare il certificato da un file di configurazione CA radice e il file CSR.

    openssl ca -config rootca.conf -in pop.csr -out pop.crt -extensions client_ext
    

    Per altre informazioni, vedere Esercitazione - Creare e caricare certificati per i test.

  5. Selezionare il nuovo certificato nella visualizzazione Dettagli certificato .

  6. Dopo il caricamento del certificato, selezionare Verifica. Lo stato del certificato deve essere modificato in Verificato.

Per ulteriori informazioni

Per altre informazioni sui certificati X.509 e su come vengono usati in hub IoT, vedere gli articoli seguenti: