Decodificatore di certificati e PEM
Decodifica certificati X.509 e richieste di firma da PEM: soggetto, emittente, validità, nomi alternativi, estensioni e impronte.
Incolla il PEM qui sopra e verrà decodificato qui.
Che cosa fa questo strumento
Un certificato arriva come un blocco di Base64 fra due righe di trattini, e a guardarlo non se ne capisce nulla. Questo strumento lo decodifica: a chi è stato rilasciato e da chi, quando scade, quali nomi host copre, che chiave contiene e ogni estensione che porta. Incolla un’intera catena e ogni certificato viene confrontato con il successivo.
Tutto gira nel tuo browser. Qui conta più che nella maggior parte degli strumenti: l’alternativa di solito è incollare un certificato di produzione sul server di qualcun altro, oppure ricordarsi l’invocazione di openssl, cosa che quasi nessuno fa.
Il PEM è solo l’involucro
I trattini e il Base64 sono imballaggio. Dentro c’è DER, una codifica binaria di una struttura chiamata ASN.1, e l’etichetta fra i trattini dice quale struttura aspettarsi:
CERTIFICATE un certificato X.509 rilasciato CERTIFICATE REQUEST una CSR: cio che hai chiesto a una CA PUBLIC KEY una chiave nuda, senza identita PRIVATE KEY la meta segreta, qui rifiutata
Lo stesso certificato può arrivare anche come DER grezzo in un file .cer o .crt, senza trattini e senza Base64. Se un file si apre come rumore binario anziché come testo, è di questo che si tratta: codificalo prima in Base64, oppure esportalo come PEM.
Che cosa c’è davvero in un certificato
I campi fondamentali sono gli stessi in ogni certificato mai rilasciato:
- Soggetto — di chi parla il certificato. Per un sito web oggi è di solito solo un nome comune, e spesso nient’altro.
- Emittente — l’autorità di certificazione che lo ha firmato. Il suo nome di soggetto compare alla lettera come emittente di tutto ciò che firma, ed è questo a rendere possibile il controllo della catena.
- Validità — due istanti assoluti, sempre in UTC. Lo strumento mostra entrambi e calcola quanto manca nel tuo browser, perché la macchina che ha generato questa pagina non sa quando la stai leggendo.
- Numero di serie — unico per emittente, ed è l’identificatore usato quando un certificato viene revocato.
- Algoritmo di firma — con che cosa ha firmato l’emittente, per esempio SHA-256 con ECDSA.
- Chiave pubblica — il tipo e la dimensione. In RSA è la lunghezza in bit del modulo; in EC è una proprietà della curva nominata, quindi P-256 è sempre 256 bit.
Un campo che ci si aspetta e non si trova più: il nome comune del soggetto non è ciò che i browser controllano. Per la corrispondenza del nome host viene ignorato da anni. Quello che conta è l’estensione dei nomi alternativi, qui sotto.
Le estensioni che decidono se funziona
Un certificato può portare un numero qualsiasi di estensioni. Cinque determinano se verrà davvero accettato, e lo strumento le decodifica per intero:
- Nomi alternativi del soggetto — i nomi host, gli indirizzi IP o di posta per cui il certificato è valido. È il campo che i browser controllano, e un certificato i cui nomi alternativi non includono quello che hai digitato verrà rifiutato per quanto corretto sia tutto il resto.
- Vincoli di base — se è un’autorità di certificazione e quanti intermedi possono stare sotto. Un certificato finale marcato come CA, o il contrario, spezza la catena.
- Uso della chiave — a che cosa la chiave può servire in assoluto: firmare, cifrare chiavi, firmare certificati. Marcata come critica quasi sempre, il che obbliga il software a rifiutare il certificato invece di ignorare un uso che non comprende.
- Uso esteso della chiave — lo scopo: server TLS, client TLS, firma del codice, posta. Un certificato senza autenticazione server TLS non servirà un sito web, ed è una sorpresa frequente nei certificati emessi per altro.
- Identificatori di chiave del soggetto e dell’autorità — brevi hash che permettono al software di collegare in fretta un certificato al suo emittente quando più soggetti condividono un nome.
Ogni altra estensione è elencata con il suo nome quando è noto, con il suo OID e con l’indicazione se è marcata critica. Nulla viene scartato in silenzio: un’estensione che lo strumento non decodifica compare comunque, così si vede che c’è.
Catene, e che cosa significa qui «continua»
Un server non invia quasi mai un solo certificato. Invia il proprio più gli intermedi necessari a risalire a una radice di cui il client si fida già. L’ordine conta e il file di solito si chiama fullchain.pem:
blocco 1 finale subject: example.com issuer: Example CA R3 blocco 2 intermedio subject: Example CA R3 issuer: Example Root blocco 3 radice spesso omessa: il client ce l ha gia
Ogni certificato nomina il proprio emittente, e il certificato successivo dovrebbe avere esattamente quel nome come soggetto. Lo strumento confronta i due nomi byte per byte e dice se coincidono. È l’unica relazione verificabile offline, e intercetta i due guasti che spiegano la maggior parte dei problemi di catena: un intermedio omesso e blocchi incollati nell’ordine sbagliato.
Questi guasti hanno un sintomo caratteristico. I browser desktop spesso coprono un intermedio mancante andandoselo a prendere da soli, così il sito sembra a posto sul portatile e fallisce su un telefono, in un’app mobile o da curl. Se è questo che stai indagando, incolla prima qui la catena completa.
Che cosa questo strumento non ti dice
Non verifica le firme, e non può. Accertare che un certificato sia stato davvero firmato dal suo emittente richiede la chiave pubblica di quest’ultimo; decidere se a quell’emittente si debba credere richiede un archivio di fiducia. Un file incollato non fornisce né l’una né l’altro. Non può nemmeno controllare la revoca, che richiede una richiesta di rete alla CA.
Quindi «la catena è continua» qui significa che i nomi combaciano, non che la catena sia valida. Una catena di certificati falsificati combacerebbe alla perfezione. A che cosa serve il controllo è a trovare errori strutturali nella tua configurazione — che è esattamente quello che si sta guardando quando si incolla una catena in un decodificatore.
Impronte e chiavi private
L’impronta SHA-256 è un hash dell’intero certificato, ed è ciò che si confronta con un valore che qualcuno ti ha comunicato o con un pin. Nota che cosa identifica: il certificato, non la chiave che contiene. Rinnovare un certificato per la stessa chiave produce un’impronta diversa, ed è il motivo consueto per cui un pin si rompe al rinnovo. L’impronta SHA-1 è mostrata anch’essa perché strumenti e console più vecchi la stampano ancora — solo per identificare; SHA-1 non deve firmare nulla.
Le chiavi private vengono riconosciute e rifiutate. Nulla di ciò che incolli qui lascia il tuo browser, quindi il rifiuto non riguarda questa pagina: incollare una chiave privata in un modulo web è un’abitudine che è meglio non prendere, e il prossimo sito che la chiederà potrebbe non girare in locale. Se devi verificare che una chiave e un certificato stiano insieme, confronta in locale la chiave pubblica del certificato con quella derivata dalla chiave.
Domande frequenti
- Questo dice se il mio certificato è attendibile?
- No. L’attendibilità dipende da un archivio di fiducia e da un controllo di firma, e nessuno dei due è possibile da un file incollato. Lo strumento riferisce che cosa il certificato dice di sé, e se i nomi di una catena combaciano.
- Il mio sito funziona in Chrome sul portatile ma fallisce su mobile. Che cosa guardo?
- Quasi sempre un intermedio mancante. I browser desktop spesso recuperano da soli il certificato assente e nascondono il problema; altri client no. Incolla qui la catena completa: se il collegamento fra due certificati risulta spezzato, la lacuna è lì.
- Perché il nome comune non corrisponde al mio sito?
- Perché non è quello che viene controllato. La corrispondenza del nome host usa l’estensione dei nomi alternativi, e così è da anni. Guarda la riga dei nomi alternativi: se il nome host non c’è, il certificato non lo copre, qualunque cosa dica il nome comune.
- Perché non decodifica la mia chiave privata?
- Di proposito. Nulla di ciò che incolli lascia il tuo browser, ma incollare chiavi private nelle pagine web è un’abitudine da evitare, e questo strumento si rifiuta di insegnarla. Certificati e richieste di firma non contengono segreti e vengono decodificati normalmente.
- Che differenza c’è fra un certificato e una CSR?
- Una CSR è ciò che mandi a un’autorità di certificazione: il tuo nome di soggetto, la tua chiave pubblica e le estensioni che richiedi, firmati da te. Un certificato è ciò che torna indietro, con il nome della CA stessa come emittente, una finestra di validità e un numero di serie. Lo strumento decodifica entrambi.
- Il mio certificato viene inviato da qualche parte?
- No. L’analisi, la decodifica e il calcolo delle impronte girano tutti nel tuo browser; nulla di ciò che incolli lascia il tuo dispositivo.