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.
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
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz