Ti sei evoluto per lo più giusto, ma per aggiungere diversi punti
ed espandi @CoverosGene più di quanto mi sentissi a mio agio in una modifica:
X.509 definisce un certificato (e alcune altre cose non rilevanti qui) in ASN.1,
un (molto!) metodo generale di strutturazione dei dati che ha diverse codifiche definite, di cui
DER La rappresentazione della codifica distinta è abbastanza comune e viene utilizzata qui.
Formato
PEM - per diversi tipi di dati di cui un certificato è solo uno -
è come dici tu solo dati binari (DER) codificati in base64 (modifica) suddivisi in righe normalmente ogni 64 caratteri (ma ci sono variazioni), oltre a intestazione e linee di rimorchio
composto da trattini + BEGIN o END + il tipo di dati, in questo caso CERTIFICATO + trattini.
Queste linee sembrano ridondanti per un essere umano, ma sono previste e per lo più richieste dal software.
PEM (Privacy Enhanced Mail) era in realtà uno standard completo per la posta elettronica sicura che ha ora
stato per lo più dimenticato (vedi sotto) tranne per il suo formato di codifica.
(modifica) A partire dal 2015 è RFC 7468 che descrive in dettaglio la maggior parte uso di formati "PEM" per i moderni dati crittografici.
PKCS # 7 è stato definito da RSA (la società, non l'algoritmo) come formato multiuso
per dati crittografati e / o firmati. È stato consegnato a IETF e si è evoluto in
Sintassi dei messaggi crittografici CMS link quindi link quindi link quindi link ,
da qui la formulazione del prompt di Windows (inetopt). "PKCS # 7" è spesso usato per significare entrambi
l'originale RSA PKCS # 7 e il successore IETF CMS, nello stesso modo "SSL" viene spesso utilizzato per
sia il protocollo Netscape originale che il TLS Transport Level Security di IETF.
Il formato .p7b o .p7c è un caso speciale di PKCS # 7 / CMS: una struttura SignedData contenente
nessun "contenuto" e zero SignerInfos, ma uno o più certificati (di solito) e / o CRL (raramente).
Quando questo ha fornito un modo standard per gestire (modifica) il set di certificati necessari per creare una catena (non necessariamente in ordine).
PKCS # 7 / CMS è (sono?) anche ASN.1 e in base alle circostanze può essere DER o BER ,
una codifica strettamente correlata con alcune differenze molto minori che la maggior parte dei decodificatori DER gestisce.
Mentre PKCS # 7 / CMS come qualsiasi oggetto DER o BER può essere formattato PEM, Non ho visto alcuna implementazione diversa da
openssl (modifica) è raro per i certs. (Java CertificateFactory
può leggere PKCS7 / CMS-certs-only da DER o PEM, ma CertPath.getEncoded
lo scrive solo su DER.) Al contrario, i formati DER e PEM per un singolo certificato sono comuni.
PKCS # 7 / CMS viene anche utilizzato come base per l'email sicura S / MIME (più file rfcs a partire da 5751).
Fondamentalmente PEM codifica PKCS # 7 in testo ASCII che i sistemi di posta elettronica degli anni '80 potrebbero facilmente gestire, mentre
S / MIME rappresenta CMS come entità MIME che sono codificate in diversi modi in cui i moderni sistemi di posta elettronica possono gestire.
OpenSSL argomenti confusi implementando, nell'ordine: un comando pkcs7 che gestisce
il caso Certs-CRL-only non completo PKCS # 7; un comando crl2pkcs7 che effettivamente gestisce
CRL e certificati, ma ancora non il resto di PKCS # 7; un comando smime che gestisce effettivamente entrambi S / MIME
e PKCS # 7 / CMS per la maggior parte dei casi di messaggi crittografati e / o firmati; e un comando cms che gestisce effettivamente
sia S / MIME che PKCS # 7 / CMS per un set di casi più completo.
Quindi descriverei le opzioni come: un certificato in formato PEM o DER; un (singolo) certificato
in un contenitore PKCS # 7 o in breve solo p7 e menziona PEM solo nel raro caso in cui si applica;
o una catena di certificati in PKCS # 7 o p7. La differenza semantica tra un singolo cert e una catena di cert
è importante almeno quanto la differenza di formato tra un certificato di per sé o un contenitore.
E questo non raggiunge nemmeno la diffusa confusione tra un certificato di per sé (per qualche altra entità, più spesso una radice o un ancoraggio della CA) e la combinazione del certificato privatekey PLUS - o solitamente della catena - che usi per dimostrare la propria identità, ad esempio come server SSL / TLS o quando si firma l'e-mail S / MIME. Che utilizza il formato originale di scambio di informazioni personali PFX di Microsoft o il suo modulo standard PKCS # 12 o "p12".