SSLmentor

SSL/TLS certifikáty pro kvalitní HTTPS zabezpečení webových stránek a internetových projektů.

Formáty certifikátů

V souvislosti s SSL certifikáty je zmiňován poměrně veký počet názvů jako PEM, CSR, KEY, DER atd. Jedná se o soubory, které jsou prakticky pouze "schránky" pro umístění certifikátu a jeho klíčů. Velké množství formátů vzniklo postupně díky různé implementaci v operačních systémech nebo aplikacích, některé byly standardizovány v RFC.

CSR (.csr)

Certificate Signing Request (CSR) je žádost o certifikát, která se předává certifikační autoritě k ocertifikování. Žádost lze generovat přímo na serveru, v aplikaci OpenSSL nebo si ji můžete po objednání SSL certifikátu jednoduše vygenerovat v detailu objednávky podle tohoto návodu včetně privátního klíče. Formát žádosti je podle PKCS #10 (Public Key Cryptography Standards) a je definován v dokumentu RFC 2986 (Certification Request Syntax Specification). CSR žádost v sobě obsahuje potřebné informace k vystavení certifikátu. Tedy název domény, organizaci, stát a také veřejný klíč, který certifikační autorita potvrzuje. Formát kódování žádosti CSR, která se vkládá do objednávky a odesílá certifikační autoritě je PEM. Struktura informací v žádosti je definovaná pomocí ASN.1 (abstraktní syntaxová notace).
Po vystavení a podepsání certifikátu certifikační autoritou je již certifikát dodáván od autority v jiných formátech, například CRT, p7b. Často je také rovnou zasílán e-mailem v txt formátu PEM, současně s informací o vystavení SSL certifikátu.

Žádost o certifikát a privátní klíč nedoporučujeme vytvářet na neznámých stránkách on-line. V naší nápovědě publikujeme návod jak na generování CSR a privátního klíče v OpenSSL.

PEM (.pem)

Jeden z nejpoužívanějších formátů pro uložení SSL/TLS certifikátů. Jedná se o kontejner pro uchovávání textově kódovaných kryptografických dat (klíčů a certifikátů) a umožňuje snadné odesílání elektronickou poštou, je definovaný v RFC 1421 až 1424. Může obsahovat samostatný veřejný certifikát, ale i veřejný certifikát plus certifikáty CA nebo může obsahovat celý soubor certifikátů včetně veřejného klíče, soukromého klíče a kořenových certifikátů vystavující certifikační autority. Ve formátu PEM se také dodává žádost o certifikát CSR (Certificate Signing Request), která se převádí z formátu PKCS10.
Název vznikl ze zkratky Privacy-enhanced Electronic Mail (PEM), což byl standard pro zabezpečení elektronické pošty. Hlavní podstatou PEM formátu je překódování binárního formátu (tedy jedniček a nul) metodou base64 a přidání informativní hlavičky a patičky typu -----BEGIN PRIVATE KEY----- a -----END PRIVATE KEY----- nebo -----BEGIN CERTIFICATE----- a -----END CERTIFICATE-----.

Ukázka vystaveného certifikátu ve formátu PEM

-----BEGIN CERTIFICATE-----
MIIF+TCCBOGgAwIBAgIRAOUXUXsbB/LpS0VTQsz/HFcwDQYJKoZIhvcNAQELBQAw
gY8xCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
BgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE3MDUGA1UE
AxMuU2VjdGlnbyBSU0EgRG9tYWluIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZlciBD
QTAeFw0xOTAxMTcwMDAwMDBaFw0xOTA0MTcyMzU5NTlaMFAxITAfBgNVBAsTGERv
bWFpbiBDb250cm9sIFZhbGlkYXRlZDERMA8GA1UECxMIRnJlZSBTU0wxGDAWBgNV
BAMTD3dlYi1zZWN1cml0eS5jejCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAMNC5twUz78YyvW9Y+avpBZLZjGFLZbNZN3tukWL/1wuwLUrhuCju1IDXWnJ
a7vu4IFA/m/fgD68Y+I6BEF/tdw94TGc/X0n+Q326ZB3ff8e5+GF2o2oXQCUEX60
wGv17zIx8jCYZtaP9rWekUzWmkNPagImboWeYSLWkt7GvdJCU7VY8kpKm7Y/JF/P
Qs4Z5+d4HMsfknJ+PofI7Ve3wT0aPE4aiQ3+MWryxcnZYzH7xNpeB7UbkfFIeDki
4X1vkVFM2Do07IkY9dO8d0UNI3lDDJDpxCCW4kVOl8yQTRtmyPZmtXk5uoyFcCEh
KP5/T2gxNr9KNzIornE0F7LZfpMCAwEAAaOCAowwggKIMB8GA1UdIwQYMBaAFI2M
XsRUrYrhd+mb+ZsF4bgBjWHhMB0GA1UdDgQWBBSHdiVoz7sMpYkdFsQWYHoMcJZU
IzAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEF
BQcDAQYIKwYBBQUHAwIwSQYDVR0gBEIwQDA0BgsrBgEEAbIxAQICBzAlMCMGCCsG
AQUFBwIBFhdodHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBAgEwgYQGCCsG
AQUFBwEBBHgwdjBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5zZWN0aWdvLmNvbS9T
ZWN0aWdvUlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNydDAjBggr
BgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wLwYDVR0RBCgwJoIPd2Vi
LXNlY3VyaXR5LmN6ghN3d3cud2ViLXNlY3VyaXR5LmN6MIIBBAYKKwYBBAHWeQIE
AgSB9QSB8gDwAHYAu9nfvB+KcbWTlCOXqpJ7RzhXlQqrUugakJZkNo4e0YUAAAFo
Ww+ePQAABAMARzBFAiEAtZoULgmDyEppYK9nmDWNRjRGcE+BBo/DLaaoaYWg7C8C
IH+0UCda6Txcl05inAsMpzlePELyZ3hawgEdmMugK3bXAHYAdH7agzGtMxCRIZzO
JU9CcMK//V5CIAjGNzV55hB7zFYAAAFoWw+eiwAABAMARzBFAiEAmdEbql+1pWWf
HmpkY34JziCOQzaDlFVtUFen+blgIWwCIBVnwDD3vnwSsrO2T5Clo5Pjqa+xxU7O
trLo/ZRGkICBMA0GCSqGSIb3DQEBCwUAA4IBAQAzOM9lS3RSU7rLy8T3BfixHvua
ErZ+YOHCHpYhlCeSuFZ66jVHueYWvgfF8A+enRdMM0k0z0PC9enREnumNDq3msCf
WYhSLd5lDXiEddg2GCrXkwhOFfOiG0tywS5CD+hLsTq1LQkWDQg7EKlIb6ddhaZO
IYEQ9xwE7aehynQEvAjv3UyevMYfvw7glY+MW5bkMfsxPndDD1gDbnYt8kyenjcv
odjnkvTw4ngnCy1gF9mVWkgQsE1j34FER1bVtR/FlspI0FB+ogV4Qhso1N23DwtF
VDKxH8p+ddYh1LX4b6Oy3dZqzt4HOcunPKsFv36ABpeTs8FPOjgQueTWfHQ4
-----END CERTIFICATE-----

Tento textový řetězec si můžete dekódovat například na stránce ssldecoder.org, kde zjistíte mnoho informací o certifikátu (platnost, informace v certifikátu, autorita a mnoho dalšího).

Soubory PEM jsou zakódované v Base64 formátu, což je kódování, které převádí binární data na posloupnost tisknutelných ASCII znaků (64 prvková sada znaků tvořená velkými i malými písmeny anglické abecedy, číslicemi a znaky plus (‚+‘) a lomítko (‚/‘). Se soubory PEM se velice jednoduše pracuje, neboť mají obsah v čitelném textovém formátu a lze je otevřít v jakémkoliv editoru. Jednotlivé certifikáty jsou pak jednoznačně odděleny hlavičkou a patičkou. Více o PEM formátu ve WIKI...

PFX (.pfx) / PKCS #12 formát

.pfx, ale také .p12 nebo .pkcs12 jsou formáty definované v Public-Key Cryptography Standards (PKCS standardy). Jedná se o formát kontejneru s heslem, který obsahuje veřejné i privátní certifikáty. Na rozdíl od souborů .pem je kontejner plně šifrován. PKCS #12 byl původně soukromý standard společnosti Microsoft, který byl později definován v RFC 7292. Poskytuje vylepšenou bezpečnost oproti textovému formátu PEM.
S PFX formátem se setkáme především na Windows platformě. Pokud se negeneruje žádost o certifikát přímo v IIS (Internet Information System) je nutné dodat administrátorovi serveru certifikát ve formátu PFX pro import na server. Pro tyto případy publikujeme v nápovědě návod jak exportovat certifikát do PFX pomocí OpenSSL.
Do souboru .pfx se také exportují Code Signing certifikáty a elektronický podpis.

KEY (.key)

V souboru .key se nachází certifikát ve formátu PEM a obsahuje pouze soukromý klíč certifikátu. Privátní klíč je uzavřen v řetězcích -----BEGIN PRIVATE KEY----- a -----END PRIVATE KEY-----. Tento soubor by měl jít otevřít v jakémkoliv textovém editoru.
Pro .key formát není standardizace a jedná se defakto o označení souboru s privátním klíčem.

Soubor .key otevřený v Notepadu

DER (.der)

DER (Distinguished Encoding Rules). Binární soubor (řetězec nul a jedniček), který obsahuje uložené informace o certifikátu. Obsahuje SSL certifikát či celou cestu root-chain (intermediate certifikáty) a může obsahovat také privátní klíč. Je používán v Unixovém světě nebo na Java platformách, ve Windows je soubor .der automaticky považován za nositele certifikátů. DER je defakto binární verze PEM souboru kódovaného base64.

CRT (.crt)

Soubor .crt obsahuje SSL certifkát ve formátu PEM. Lze je otevřít jakýmkoliv textovým editorem a certifikát je uzavřen ve značkách -----BEGIN CERTIFICATE----- a -----END CERTIFICATE-----.
V OS Windows se při poklepání na soubor a odsouhlasení varování, automaticky otevře okno s detailem certifikátu. Přejmenujete-li soubor .crt na .txt, poklepáním se otevře textový editor s obsahem ve formátu PEM.

CRT soubory vystaveného SSL certifikátu

PB7 (.pb7)

Formát PB7 obsahuje veřejný klíč a mezilehlé certifikáty (intermediate) od certifikační autority. Neobsahuje privátní klíč. Formát P7B/PKCS #7 je uložen ve formátu Base64 ASCII a soubor má příponu .p7b nebo .p7c. Definované v RFC 2315 jako PKCS číslo 7. Formát používaný systémem Windows. Java využívá .keystore. U těchto kontejnerů je možné definovat hierarchii certifikátů.

Další typy souborů a formátů

CER (.cer), CERT (.cert)

Jedná se o jinou příponu souborů typu .pem.

CRL

Certificate Revocation List (CRL) - seznam zneplatněných certifikátů. Certifikační autority v těchto seznamech publikují seznamy zneplatněných certifikátů.

RFC 7468

V navrhovaném standardu RFC 7468 (Textual Encodings of PKIX, PKCS, and CMS Structures) je popisováno a standardizováno textové kódování PKI (Public-Key Infrastructure X.509), PKCS (Public-Key Cryptography Standards) a CMS (Cryptographic Message Syntax).