Základy práce s OpenSSL - export, import, převody formátů

12. 6. 2018 | Jindřich Zechmeister

SSL certifikáty jsou rozšířené na všech platformách, a čas od času je potřeba certifikát mezi servery přenést, nebo jinak s ním pracovat. Majítelé certifikátů GeoTrust a RapidSSL mohou svůj certifikát použít na neomezeném počtu serverů, takže se jim bude návod na konverzi certifikátů jistě hodit.

Práce s PFX (PKCS#12) certifikátem

Formát PFX (přesnější označení je PKCS#12) se používá na platformách Microsoftu pro uložení binárního certifikátu spolu s privátním klíčem (a intermediate certifikáty). Prakticky se s ním můžete setkat na Windows a Microsoft serveru, když provádíte import či export certifikátu.

Vytvoření PFX (P12) souboru v OpenSSL

Soubor PFX můžete v OpenSSL vytvořit například ve chvíli, kdy přenášíte certifikát z linuxového serveru na server Microsoft.

openssl pkcs12 -export -out výstup.pfx -inkey privátníklíč.key -in certifikát.cer -certfile intermediate.pem

Zkombinováním certifikátu s privátním klíčem získáte soubor PFX. Pokud potřebujete přidat další certifikáty, například Intermediate, můžete tak učinit parametrem -in; například -in intermediate.cer

Export klíčů z PFX 

Chcete-li SSL certifikát ve formátu PFX převést na jiný server, je potřeba z PFX vyexportovat privátní klíč a certifikát. Často se certifikát převádí z Microsoft serveru na linuxový server, protože neomezená licence certifikátů GeoTrust (a RapidSSL) neomezuje použití certifikátu na více serverech.

Export "všeho", tedy i privátního klíče, provedete příkazem:

openssl pkcs12 -in file.pfx -out file.pem -nodes

Výsledkem je přehledný PEM soubor se všemi certifikáty, které byly v PFX. Na konci je umístěn nezašifrovaný privátní klíč, jehož nešifrovanou podobu zajistil parametr -nodes (žádné DES). 


Formáty, ve kterých jsou certifikáty uloženy

Pro základní orientaci mezi používanými formáty certifikátů uvádím krátký přehled. Obecně platí, že přípona souboru není rozhodující pro formát certifikátu; důležitý je obsah souboru.

S certifikáty můžete pracovat v binární podobě, nebo textové (Base64). V jakém z těchto dvou formátů certifikát je, poznáte buď podle koncovky, nebo podle obsahu souboru, který otevřete například v Notepadu.

Formát PEM

Nejčastěji používaný formát. Certifikát je v textové podobě v Base64 (ASCII znaky) a v této podobě ho vydávají certifikační autority, stejný formát certifikátu dostanete e-mailem od SSLmarketu. Certifikát je uveden řetězcem "-----BEGIN CERTIFICATE-----" a ukončen "-----END CERTIFICATE-----", kterou jsou součástí certifikátu.

Server Apache (a mnohé jiné) používá PEM certifikáty; certifikát může být s privátním klíčem uložen ve stejném souboru. Formát PEM využívá typicky přípony .pem, .crt, .cer, a .key.

Formát DER

Na rozdíl od předchozího typu je DER formát binární. Při otevření v Notepadu neuvidíte nic "smysluplného". Používá se často na Java platformách. Přípona souboru je .der nebo .cer.

Formát PKCS#7 nebo P7B

Tento formát opět používá Base64 a ASCII znaky, v jednou souboru je na rozdíl od PEM formátu více certifikátů. Obsahuje certifikát a jeho Intermediate certifikáty, nikoliv však privátní klíč.

Obvyklé přípony tohoto formátu jsou .p7b a .p7c. Setkáte se s nimi zejména na Microsoft platformách a Tomcatu.

PKCS#12 nebo PFX

Jak již bylo zmíněno výše, jedná se o formát, ve kterém je uložen certifikát spolu s privátním klíčem, a případně i s ostatními certifikáty v chainu (Intermediate certifikáty). V jednom souboru je tedy uloženo vše, co potřebujete pro provoz certifikátu. Jedná se o binární formát používaný zejména na Windows a Microsoft Serveru. Typickou příponou je .pfx nebo .p12.


SSLMARKET DOPORUČUJE

Konverze certifikátu mezi různými formáty

Následující příkazy použijte v OpenSSL pro převod certifikátu do jiného formátu. 

Práce s PEM certifikátem

Formát PEM ukládá certifikát v textové podobě v Base64 formátu. Je to nejuniverzálnější a nejčastěji používaný formát.

Konverze PEM do DER

Změníte textový certifikát v Base64 na binární.

openssl x509 -outform der -in certifikát.pem -out certifikát.der

Konverze PEM do P7B

openssl crl2pkcs7 -nocrl -certfile certifikát.cer -out certifikát.p7b -certfile CACert.cer

Konverze PEM do PFX

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

Práce s DER certifikátem

DER je binární formát certifikátu. Nemůžete ho tedy používat v textové podobě (kopírovat do e-mailu, apod.).

Konverze DER do PEM

openssl x509 -inform der -in certifikát.cer -out certifikát.pem

Práce s P7B certifikátem

Formát P7B obsahuje více certifikátů, ale neobsahuje privátní klíč. Používá se například pro uložení chainu certifikátu.

Konverze P7B do PEM

openssl pkcs7 -print_certs -in certifikát.p7b -out certifikát.cer

Konverze P7B do PFX

Prvně z P7B vyexportujete certifikát:

openssl pkcs7 -print_certs -in certifikát.p7b -out certifikát.cer

Potom k němu přidáte privátní klíč (.key) a intermediate certifikáty (CACert.cer) a spojíte je do PFX:

openssl pkcs12 -export -in certifikát.cer -inkey privátníklíč.key -out certifikát.pfx -certfile CACert.cer

Práce s PFX certifikátem

Formát PFX obsahuje certifikát a jeho privátní klíč chráněný heslem. Při práci s certifikátem je nutné toho heslo znát a zadat do OpenSSL.

Konverze PFX do PEM

openssl pkcs12 -in certifikát.pfx -out certifikát.cer -nodes

Certifikát a privátní klíč jsou uloženy do jednoho souboru PEM, ze kterého je můžete vykopírovat.

 

Reference:

http://www.openssl.org/docs/apps/openssl.html

https://www.sslshopper.com/ssl-converter.html


Ing. Jindřich Zechmeister
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz