La struttura di un certificato X.509 è definita utilizzando ASN.1. Ecco un estratto della definizione complessiva struttura an X.509 certificate:
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
extensions [3] EXPLICIT Extensions OPTIONAL
-- If present, version MUST be v3
}
Un valore Certificate
(con i valori contenuti riempiti) è codificato utilizzando il formato DER, che è un formato binario.
Base64 è un modo generale di codificare sequenze binarie in testo, riducendo l'insieme di byte utilizzati per i caratteri ASCII leggibili (quindi questa rappresentazione è più lunga).
Un certificato in formato PEM è il Base64 codifica del DER-codifica del certificato, con una linea di ritorno al termine di ogni blocco di 64 caratteri, posto tra delimitatori:
-----BEGIN CERTIFICATE-----
MIIB2zCCAUSgAwIBAwIBADANBgkqhkiG9w0BAQQFADAYMRYwFAYDVQQDEw1OZXRn
...
-----END CERTIFICATE-----
È potrebbe anche avere la chiave privata in formato PEM, nel qual caso i delimitatori sarebbero -----BEGIN RSA PRIVATE KEY-----
(e corrispondenti a END
), ad esempio.
Sul cavo, durante una connessione TLS, viene utilizzato DER.
Non importa ciò che l'archivio di certificati Windows utilizza internamente, dovrebbe essere in grado di importare/esportare certificati DER o PEM/Base64.
Il certificato "tipi" è un argomento più ampio rispetto al formato DER/base64. La maggior parte dei certificati utilizzati per SSL/TLS sono certificati X.509. Quindi ottieni i profili di utilizzo. Il più comune è lo Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile, che definisce essenzialmente il modo in cui le autorità di certificazione dovrebbero emettere certificati e in che modo le entità devono verificare i certificati remoti.
Potreste anche essere interessati a queste domande:
Più in generale, ottenendo un libro su PKI dovrebbe aiutare.
Grazie Bruno, ha aiutato molto!Sto avendo una visione molto più chiara ora. Per quanto riguarda il formato del negozio di Windows, sto usando le API Crypto per recuperare i certificati e sembra che supporti solo i formati binari. Dovrò scrivere il mio codificatore base64 per convertire quei certificati. –