Oblike potrdil: PEM, CRT, PFX – in njihova pretvorba

SSL Branje: 2 min

Isto potrdilo SSL je mogoče shraniti v več oblikah datotek. cPanel, Apache in Nginx pričakujejo besedilno obliko (PEM), strežniki Windows (IIS) in veliko omrežnih naprav pa zahtevajo eno samo, z geslom zaščiteno datoteko PFX. Ta članek predstavi oblike in kako jih pretvoriš z orodjem OpenSSL, ki je v Linuxu in macOS privzeto na voljo.

Oblike

Oblika Končnica Vsebina Kdo jo uporablja?
PEM .pem, .crt, .cer, .key Besedilna (Base64), začne se z vrstico -----BEGIN ...-----. V eni datoteki je lahko več potrdil in ključev. cPanel, Apache, Nginx, večina programske opreme za Linux
DER .der, .cer Enako kot PEM, le v binarni obliki. Java, nekatere aplikacije za Windows
PKCS#7 .p7b, .p7c Vsebuje le potrdila (in vmesna potrdila), zasebnega ključa ne. Windows, Tomcat
PKCS#12 .pfx, .p12 Potrdilo, vmesna potrdila in zasebni ključ shrani v eni sami, z geslom zaščiteni binarni datoteki. Windows/IIS, Exchange, Azure, veliko omrežnih naprav

Končnici .crt in .cer sta lahko zavajajoči: lahko gre za PEM ali DER. Če ob odprtju datoteke v urejevalniku besedil vidiš vrstico -----BEGIN CERTIFICATE-----, je v obliki PEM.

Na portalu za stranke lahko s strani potrdila preneseš potrdilo, vmesno potrdilo in zasebni ključ (če ga je ustvaril portal) posamično ter vse skupaj v obliki PEM.

Pretvorba

PEM → PFX (na primer za strežnik Windows)

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

Ukaz zahteva geslo, s katerim bo datoteka PFX zaščitena. Geslo je treba vnesti ob uvozu datoteke.

OpenSSL 3 datoteko PFX naredi s šifriranjem, ki ga starejše različice Windows (na primer Windows Server 2016) ne znajo prebrati. Takrat dodaj stikalo -legacy:

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

PFX → PEM (na primer za cPanel ali strežnik Linux)

# Zasebni ključ
openssl pkcs12 -in pelda.hu.pfx -nocerts -nodes -out pelda.hu.key

# Potrdilo
openssl pkcs12 -in pelda.hu.pfx -clcerts -nokeys -out pelda.hu.crt

# Vmesna potrdila
openssl pkcs12 -in pelda.hu.pfx -cacerts -nokeys -out ca-bundle.crt

Zaradi stikala -nodes izpisani zasebni ključ ne bo zaščiten z geslom, zato z njim ravnaj zaupno.

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

Uporabna preverjanja

Prikaz podatkov potrdila (za koga velja, kdo ga je izdal, do kdaj velja):

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

Ali potrdilo in zasebni ključ spadata skupaj? Izpis obeh ukazov se mora ujemati:

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

Če se razlikuje, ključ pripada drugemu potrdilu (na primer prejšnjemu CSR). Takrat tudi cPanel ne dovoli namestitve potrdila. Poišči pravi ključ ali naredi nov ključ in CSR ter potrdilo izdaj znova.

O drugih načinih preverjanja poteka govori članek Kako preverim, kdaj poteče moje potrdilo SSL?, o vmesnih potrdilih pa članek Kaj je vmesno potrdilo (CA bundle)?

Nazaj: SSL – članki (35)