Tanúsítványformátumok: PEM, CRT, PFX – és átalakításuk

Ugyanaz az SSL tanúsítvány többféle fájlformátumban is tárolható. A cPanel, az Apache és az Nginx szöveges (PEM) formátumot vár, a Windows-szerverek (IIS) és sok hálózati eszköz viszont egyetlen, jelszóval védett PFX-fájlt kér. Ez a cikk bemutatja a formátumokat, és azt, hogyan alakíthatja át őket az OpenSSL segítségével, amely Linuxon és macOS-en alapból elérhető.

A formátumok

Formátum Kiterjesztés Tartalma Ki használja?
PEM .pem, .crt, .cer, .key Szöveges (Base64), -----BEGIN ...----- sorral kezdődik. Egy fájlban több tanúsítvány és kulcs is lehet. cPanel, Apache, Nginx, a legtöbb Linuxos szoftver
DER .der, .cer Ugyanaz, mint a PEM, csak bináris formában. Java, egyes Windows-alkalmazások
PKCS#7 .p7b, .p7c Csak tanúsítványokat (és köztes tanúsítványokat) tartalmaz, privát kulcsot nem. Windows, Tomcat
PKCS#12 .pfx, .p12 A tanúsítványt, a köztes tanúsítványokat és a privát kulcsot egyetlen, jelszóval védett bináris fájlban tárolja. Windows/IIS, Exchange, Azure, sok hálózati eszköz

A .crt és a .cer kiterjesztés megtévesztő lehet: lehet PEM és DER is. Ha a fájlt szövegszerkesztővel megnyitva -----BEGIN CERTIFICATE----- sort lát, PEM formátumú.

Az Ügyfélportálon a tanúsítvány oldaláról a tanúsítványt, a köztes tanúsítványt és a privát kulcsot (ha azt a portál hozta létre) külön-külön, valamint egyben PEM formátumban töltheti le.

Átalakítás

PEM → PFX (például Windows-szerverhez)

openssl pkcs12 -export -out pelda.hu.pfx \
  -inkey pelda.hu.key -in pelda.hu.crt -certfile ca-bundle.crt

A parancs jelszót kér, amellyel a PFX-fájl védett lesz. A jelszót a fájl importálásakor kell megadni.

Az OpenSSL 3 olyan titkosítással készíti a PFX-fájlt, amelyet a régebbi Windows-verziók (például a Windows Server 2016) nem tudnak beolvasni. Ilyenkor adja hozzá a -legacy kapcsolót:

openssl pkcs12 -export -legacy -out pelda.hu.pfx \
  -inkey pelda.hu.key -in pelda.hu.crt -certfile ca-bundle.crt

PFX → PEM (például cPanelhez vagy Linuxos szerverhez)

# A privát kulcs
openssl pkcs12 -in pelda.hu.pfx -nocerts -nodes -out pelda.hu.key

# A tanúsítvány
openssl pkcs12 -in pelda.hu.pfx -clcerts -nokeys -out pelda.hu.crt

# A köztes tanúsítványok
openssl pkcs12 -in pelda.hu.pfx -cacerts -nokeys -out ca-bundle.crt

A -nodes kapcsoló miatt a kiírt privát kulcs nem lesz jelszóval védve, ezért kezelje bizalmasan.

DER ↔ PEM

# DER → PEM
openssl x509 -inform der -in pelda.hu.der -out pelda.hu.crt

# PEM → DER
openssl x509 -outform der -in pelda.hu.crt -out pelda.hu.der

P7B → PEM

openssl pkcs7 -print_certs -in pelda.hu.p7b -out pelda.hu.pem

Hasznos ellenőrzések

A tanúsítvány adatainak megjelenítése (kinek szól, ki adta ki, meddig érvényes):

openssl x509 -in pelda.hu.crt -noout -subject -issuer -dates -ext subjectAltName

Összetartozik-e a tanúsítvány és a privát kulcs? A két parancs kimenetének meg kell egyeznie:

openssl x509 -in pelda.hu.crt -noout -pubkey | openssl sha256
openssl pkey -in pelda.hu.key -pubout | openssl sha256

Ha eltér, a kulcs egy másik tanúsítványhoz (például egy korábbi CSR-hez) tartozik. Ilyenkor a cPanel sem engedi telepíteni a tanúsítványt. Keresse meg a helyes kulcsot, vagy készítsen új kulcsot és CSR-t, és állítsa ki újra a tanúsítványt.

A lejárat ellenőrzésének további módjairól a Hogyan ellenőrizhetem, mikor jár le az SSL tanúsítványom? cikk szól, a köztes tanúsítványokról pedig a Mi az a köztes tanúsítvány (CA bundle)? cikk.