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.

È stato utile?

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:

Più in generale, ottenere un libro su PKI dovrebbe aiutare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top