2012-07-27 15 views
5

Dodajemy weryfikację certyfikatów serwera w uzgadnianiu SSL dla jednego z naszych klientów. Będąc bardzo nowym w świecie Cryptography i C, myślałem, że najpierw wyjaśnię moje koncepcje dotyczące tych rzeczy, a następnie zacznę od wdrożenia.Co to są różne typy certyfikatów, formaty w kryptografii

Tak więc, szukałem wielu informacji o koncepcjach Certyfikatów, ale nie mogłem lepiej wyjaśnić moich pojęć. W rzeczywistości dodało to więcej zamieszania. :)

Oto niektóre rzeczy, których prawie nie rozumiem: 1. Co to jest format base64? Czy to samo co DER? 2. Plik PEM zawsze zawiera zawartość base64? 3. Jaki format jest używany w magazynie certyfikatów systemu Windows? Czy to jest binarne?

Czy ktoś może mi pomóc tutaj. Byłbym bardzo wdzięczny, gdyby te rzeczy się wyjaśniły.

Odpowiedz

9

Strukturę certyfikatu X.509 definiuje się przy użyciu ASN.1. Poniżej znajduje się fragment ogólnej definicji struktury z 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 
    } 

Wartość Certificate (o wartości zawartych wypełnione) jest kodowany w formacie z DER, który jest w formacie binarnym.

Base64 to ogólny sposób kodowania sekwencji binarnych w tekście, poprzez zmniejszenie zbioru bajtów używanych do odczytywania znaków ASCII (więc ta reprezentacja jest dłuższa).

certyfikat w formacie PEM jest Base64 kodowanie DER kodowania certyfikatu, z linii powrotu na końcu każdego fragmentu 64-znakowy, umieszczony pomiędzy ogranicznikami:

-----BEGIN CERTIFICATE----- 
MIIB2zCCAUSgAwIBAwIBADANBgkqhkiG9w0BAQQFADAYMRYwFAYDVQQDEw1OZXRn 
... 
-----END CERTIFICATE----- 

You może również mieć klucz prywatny w formacie PEM, w którym to przypadku ograniczniki będą na przykład -----BEGIN RSA PRIVATE KEY----- (i pasujące do END).

Na drucie podczas połączenia TLS używany jest DER.

Nie ma znaczenia, co wewnętrznie wykorzystuje magazyn certyfikatów Windows, powinien mieć możliwość importowania/eksportowania certyfikatów DER lub PEM/Base64.


Certyfikaty "typy" to szerszy temat niż format DER/base64. Większość certyfikatów używanych w protokołach SSL/TLS to certyfikaty X.509. Następnie otrzymujesz profile użytkowania. Najpopularniejszym jest Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile, który określa, w jaki sposób urzędy certyfikacji powinny wydawać certyfikaty i jak jednostki powinny weryfikować zdalne certyfikaty.

Możesz być również zainteresowany tymi pytaniami:

Bardziej ogólnie, coraz książkę o PKI powinno pomóc.

+0

Dzięki Bruno, bardzo mi pomogło!Teraz mam o wiele jaśniejszy widok. Jeśli chodzi o format sklepu Windows, używam API Crypto do pobierania certyfikatów i wygląda na to, że obsługuje tylko formaty binarne. Będę musiał napisać mój własny koder base64, aby przekonwertować te certyfikaty. –