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)?