Sono responsabile della manutenzione di due server Debian. Ogni volta che devo fare qualcosa con i certificati di sicurezza, cerco su Google dei tutorial e picchio finché finalmente funziona.
Tuttavia, nelle mie ricerche mi imbatto spesso in diversi formati di file (.key
, .csr
, .pem
) ma non sono mai stato in grado di trovare una buona spiegazione di ciò che ogni formato di file ha lo scopo.
Mi chiedevo se le brave persone qui a ServerFault potessero fornire qualche chiarimento su questo argomento?
SSL è stato in giro abbastanza a lungo da farvi pensare che ci siano formati di contenitori concordati. E hai ragione, ci sono. Si dà il caso che ci siano troppi standard. Quindi questo è quello che so, e sono sicuro che altri interverranno.
/etc/ssl/certs
), o può includere un'intera catena di certificati che include chiave pubblica, chiave privata e certificati di root. Confusamente, può anche codificare un CSR (ad esempio come usato qui) poiché il formato PKCS10 può essere tradotto in PEM. Il nome deriva da Privacy Enhanced Mail (PEM), un metodo fallito per la posta elettronica sicura, ma il formato contenitore che usava vive ancora, ed è una traduzione base64 delle chiavi x509 ASN.1./etc/ssl/private
. I diritti su questi file sono molto importanti, e alcuni programmi rifiuteranno di caricare questi certificati se sono impostati male.openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes
.Qualche altro formato che si presenta di tanto in tanto:
openssl x509 -inform der -in to-convert.der -out converted.pem
). Windows li vede come file di certificato. Per default, Windows esporterà i certificati come file formattati .DER con un'estensione diversa. Come....keystore
. A differenza dei certificati in stile .pem, questo formato ha un modo definito per includere i certificati del percorso di certificazione.In sintesi, ci sono quattro modi diversi di presentare i certificati e i loro componenti:
Spero che questo aiuti.
Il PEM da solo non è un certificato, è solo un modo di codificare i dati. I certificati X.509 sono un tipo di dati che vengono comunemente codificati usando il PEM.
Il PEM è un certificato X.509 (la cui struttura è definita usando ASN.1), codificato usando l'ASN.1 DER (distinguished encoding rules), poi fatto passare attraverso la codifica Base64 e bloccato tra linee di ancoraggio di testo semplice (BEGIN CERTIFICATE e END CERTIFICATE).
È possibile rappresentare gli stessi dati usando le rappresentazioni PKCS#7 o PKCS#12, e l'utilità a riga di comando openssl può essere usata per farlo.
Gli ovvi vantaggi del PEM sono che è sicuro da incollare nel corpo di un messaggio di posta elettronica perché ha linee di ancoraggio ed è pulito a 7 bit.
RFC1422 ha maggiori dettagli sullo standard PEM per quanto riguarda le chiavi e i certificati.
A volte un file .crt
è già un .pem
. Vedi: https://stackoverflow.com/questions/991758/openssl-pem-key