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.
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. –