Convalida della catena di certificati

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Questo documento spiega come convalidare una catena di certificati prima di caricarlo in un archivio chiavi o in un archivio attendibilità in Apigee Edge. Il processo si basa sul toolkit OpenSSL per convalidare la catena di certificati ed è applicabile a qualsiasi ambiente in cui è disponibile OpenSSL.

Prima di iniziare

Prima di seguire la procedura descritta in questo documento, assicurati di comprendere i seguenti argomenti:

  • Se non hai familiarità con una catena di certificati, leggi Catena di attendibilità.
  • Se non hai dimestichezza con la libreria OpenSSL, leggi OpenSSL.
  • Se vuoi utilizzare gli esempi di riga di comando di questa guida, installa o aggiorna il client OpenSSL all'ultima versione.
  • Assicurati che i certificati siano in formato PEM. Se i certificati non sono in formato PEM, segui le istruzioni riportate in Convertire i certificati nel formato supportato per convertirli in formato PEM.

Convalida dell'oggetto e dell'emittente del certificato per l'intera catena in corso

Per convalidare la catena di certificati utilizzando i comandi OpenSSL, completa i passaggi descritti nelle seguenti sezioni:

Suddivisione della catena di certificati

Prima di convalidare il certificato, devi dividere la catena di certificati in certificati separati seguendo questi passaggi:

  1. Accedi al server in cui esiste il client OpenSSL.
  2. Suddividi la catena di certificati nei seguenti certificati (se non l'hai già fatto):
    • Certificato entità: entity.pem
    • Certificato intermedio: intermediate.pem
    • Certificato radice: root.pem

La figura seguente mostra una catena di certificati di esempio:

Flusso della catena di certificati: da certificato di identità a certificato intermedio a certificato radice

Verifica dell'oggetto e dell'emittente del certificato

Questa sezione descrive come ottenere l'oggetto e l'emittente dei certificati e verificare di avere una catena di certificati valida.

  1. Esegui il seguente comando OpenSSL per recuperare Subject e Issuer per ogni certificato nella catena da entity a root e verificare che formino una catena di certificati adeguata:
    openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
        

    Dove certificate è il nome del certificato.

  2. Verifica che i certificati della catena rispettino le seguenti linee guida:
    • Subject di ogni certificato corrisponde a Issuer del certificato precedente nella catena (tranne il certificato Entity).
    • Subject e Issuer sono uguali per il certificato radice.

    Se i certificati della catena rispettano queste linee guida, la catena di certificati viene considerata completa e valida.

    Esempio di convalida della catena di certificati

    L'esempio seguente è l'output dei comandi OpenSSL per una catena di certificati di esempio contenente tre certificati:

    Certificato di entità

    openssl x509 -text -in entity.pem | grep -E '(Subject|Issuer):'
    
    Issuer: C = US, O = Google Trust Services, CN = GTS CA 1O1
    Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.enterprise.apigee.com
            

    Certificato intermedio

    openssl x509 -text -in intermediate.pem  | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: C = US, O = Google Trust Services, CN = GTS CA 1O1
            

    Certificato radice

    openssl x509 -text -in root.pem | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
            

    Nell'esempio mostrato sopra, tieni presente quanto segue:

    • Il valore Subject del certificato intermedio corrisponde al valore Issuer del certificato dell'entità.
    • Il valore Subject del certificato radice corrisponde al valore Issuer del certificato intermedio.
    • Subject e Issuer sono gli stessi nel certificato radice.

    Dall'esempio riportato sopra, puoi verificare che la catena di certificati di esempio sia valida.

Verifica dell'oggetto del certificato e dell'hash dell'emittente

Questa sezione spiega come ottenere l'hash del soggetto e dell'emittente dei certificati e verificare di avere una catena di certificati valida.

È sempre buona norma verificare la sequenza di hash dei certificati, in quanto può essere utile per identificare problemi come il nome comune (CN) del certificato che contiene spazi o caratteri speciali indesiderati.

  1. Esegui il seguente comando OpenSSL per ottenere la sequenza hash per ogni certificato nella catena da entity a root e verifica che formino una catena di certificati adeguata.
  2. openssl x509 -hash -issuer_hash -noout -in certificate
        

    Dove certificate è il nome del certificato.

  3. Verifica che i certificati della catena rispettino le seguenti linee guida:
    • Subject di ogni certificato corrisponde a Issuer del certificato precedente nella catena (tranne il certificato Entity).
    • Subject e Issuer sono uguali per il certificato radice.

    Se i certificati della catena rispettano queste linee guida, la catena di certificati viene considerata completa e valida.

    Convalida di una catena di certificati di esempio tramite sequenza hash

    L'esempio seguente è l'output dei comandi OpenSSL per una catena di certificati di esempio contenente tre certificati:

    openssl x509 -in entity.pem -hash -issuer_hash -noout
    c54c66ba #this is subject hash
    99bdd351 #this is issuer hash
        
    openssl x509 -in intermediate.pem -hash -issuer_hash -noout
    99bdd351
    4a6481c9
        
    openssl x509 -in root.pem -hash -issuer_hash -noout
    4a6481c9
    4a6481c9
        

    Nell'esempio mostrato sopra, tieni presente quanto segue:

    • Il valore subject hash del certificato intermedio corrisponde al valore issuer hash del certificato dell'entità.
    • Il valore subject hash del certificato radice corrisponde al valore issuer hash del certificato dell'emittente.
    • subject e issuer hash sono gli stessi nel certificato radice.

    Dall'esempio riportato sopra, puoi verificare che la catena di certificati di esempio sia valida.

Verificare la scadenza del certificato

Questa sezione spiega come verificare se tutti i certificati della catena sono scaduti utilizzando i seguenti metodi:

  • Visualizza le date di inizio e di fine del certificato.
  • Ottieni lo stato di scadenza.

Data di inizio e di fine

Esegui il seguente comando OpenSSL per ottenere le date di inizio e di fine di ogni certificato nella catena dal giorno entity al giorno root e verifica che tutti i certificati nella catena siano in vigore (la data di inizio è precedente a oggi) e non siano scaduti.

Esempio di convalida della scadenza del certificato fino alle date di inizio e di fine

openssl x509 -startdate -enddate -noout -in entity.pem
notBefore=Feb  6 21:57:21 2020 GMT
notAfter=Feb  4 21:57:21 2021 GMT
openssl x509 -startdate -enddate -noout -in intermediate.pem
notBefore=Jun 15 00:00:42 2017 GMT
notAfter=Dec 15 00:00:42 2021 GMT
openssl x509 -startdate -enddate -noout -in root.pem
notBefore=Apr 13 10:00:00 2011 GMT
notAfter=Apr 13 10:00:00 2022 GMT

Stato scadenza

Esegui il seguente comando OpenSSL per verificare se il certificato è già scaduto o scadrà il giorno N seconds. Questo restituisce lo stato di scadenza del certificato nel contesto della data di sistema attuale.

openssl x509 -checkend <N Seconds> -noout -in certificate

Dove certificate è il nome del certificato.

Esempio di convalida della scadenza del certificato tramite l'opzione di check-end

Il seguente comando utilizza 0 seconds per verificare se il certificato è già scaduto o meno:

openssl x509 -checkend 0 -noout -in entity.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in intermediate.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in root.pem
Certificate will not expire

In questo esempio, il messaggio Certificate will not expire indica che il certificato non è ancora scaduto.