Quali sono diversi tipi di certificati, formati in crittografia
-
12-12-2019 - |
Domanda
Stiamo aggiungendo la verifica dei certificati del server in handshake SSL per uno dei nostri clienti.Essendo molto nuovo alla crittografia e al mondo C, pensavo di chiarire per la prima volta i miei concetti su queste cose e poi iniziano con l'implementazione.
Allora, ho googato molto per lo più per lo più per i concetti di certificati, ma non potevo chiarire i miei concetti meglio per la mia soddisfazione.In realtà ha aggiunto più confusione.:)
Ecco alcune cose che non capisco quasi affatto: 1. Cos'è il formato BASE64?È uguale a der? 2. Il file PEM contiene sempre contenuti base64? 3. Qual è il formato utilizzato da Windows Certificate Store?È binario?
può qualcuno per favore aiutami qui. Sarebbe molto grato se queste cose vengono cancellate per me.
Soluzione
La struttura di un certificato X.509 è definita utilizzando Asn.1 . Ecco un estratto della definizione generale della struttura di un certificato X.509 :
..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 compilati) è codificato utilizzando il der formato , che è un formato binario.
base64 è un modo generale di codificare sequenze binarie nel testo, riducendo il set di Byte utilizzati per caratteri ASCII leggibili (quindi questa rappresentazione è più lunga).
Un certificato in formato PEM è la codifica di base64 della codifica Der-codifica del certificato, con un ritorno di linea alla fine di ogni pezzo di 64 caratteri, posizionato tra delimitatori:
-----BEGIN CERTIFICATE-----
MIIB2zCCAUSgAwIBAwIBADANBgkqhkiG9w0BAQQFADAYMRYwFAYDVQQDEw1OZXRn
...
-----END CERTIFICATE-----
.
Potresti anche avere la chiave privata in formato PEM, nel qual caso i delimitatori sarebbero generatoriGoDiceTagCode (e corrispondenza -----BEGIN RSA PRIVATE KEY-----
), ad esempio.
Sul filo, durante una connessione TLS, Der viene utilizzato.
Non importa ciò che il negozio di certificato di Windows utilizza internamente, dovrebbe essere in grado di importare / esportare i certificati Der o PEM / Base64.
.
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 profili d'uso. La più comune è il internet x.509 Certificato di infrastruttura chiave pubblica Elenco di revoca del certificato (CRL) Profilo , che definisce essenzialmente come le autorità di certificazione dovrebbero emettere certificati e come le entità dovrebbero verificare i certificati remoti.
Potresti anche essere interessato a queste domande:
- .
- Cosa significa che un certificato digitale sia "firmato"?
- Qual è un certificato SSL destinato a dimostrare e come lo fa?
Più in generale, ottenere un libro su PKI dovrebbe aiutare.