Som zodpovedný za údržbu dvoch serverov Debian. Vždy, keď musím niečo urobiť s bezpečnostnými certifikátmi, vyhľadám si na Googli návody a lámem si hlavu, kým to konečne funguje.
Pri hľadaní však často narážam na rôzne formáty súborov (.key
, .csr
, .pem
), ale nikdy sa mi nepodarilo nájsť dobré vysvetlenie, na čo ktorý formát slúži.
Chcel som sa spýtať, či by dobrí ľudia tu na ServerFault mohli poskytnúť nejaké vysvetlenie v tejto veci?
SSL je tu už dosť dlho, takže by ste si mysleli, že budú existovať dohodnuté formáty kontajnerov. A máte pravdu, existujú. Ako to už býva, je tu príliš veľa štandardov. Takže toto je to, čo viem, a som si istý, že sa pridajú aj iní.
/etc/ssl/certs
), alebo môže obsahovať celý reťazec certifikátov vrátane verejného kľúča, súkromného kľúča a koreňových certifikátov. Mätúce je, že môže kódovať aj CSR (napr. ako sa používa tu), pretože formát PKCS10 sa dá preložiť do PEM. Názov pochádza z Privacy Enhanced Mail (PEM), neúspešnej metódy pre bezpečnú elektronickú poštu, ale použitý kontajnerový formát žije ďalej a je to preklad kľúčov x509 ASN.1 do formátu base64./etc/ssl/private
. Práva na tieto súbory sú veľmi dôležité a niektoré programy odmietnu načítať tieto certifikáty, ak sú nastavené nesprávne.openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes
Niekoľko ďalších formátov, ktoré sa z času na čas objavia:
openssl x509 -inform der -in to-convert.der -out converted.pem
). Systém Windows ich vidí ako súbory certifikátov. V predvolenom nastavení bude systém Windows exportovať certifikáty ako súbory vo formáte .DER s inou príponou. Napríklad....keystore
. Na rozdiel od certifikátov v štýle .pem má tento formát definovaný spôsob, ako zahrnúť certifikáty certifikačnej cesty.V súhrne existujú štyri rôzne spôsoby prezentácie certifikátov a ich súčastí:
Dúfam, že to pomôže.
Samotný PEM nie je certifikát, je to len spôsob kódovania údajov. Certifikáty X.509 sú jedným z typov údajov, ktoré sa bežne kódujú pomocou PEM.
PEM je certifikát X.509 (ktorého štruktúra je definovaná pomocou ASN.1), zakódovaný pomocou ASN.1 DER (pravidlá rozlišovania kódovania), potom prechádza kódovaním Base64 a je vložený medzi riadky s kotvou v podobe obyčajného textu (BEGIN CERTIFICATE a END CERTIFICATE).
Tie isté údaje môžete reprezentovať pomocou reprezentácie PKCS#7 alebo PKCS#12, na čo možno použiť nástroj príkazového riadka openssl.
Zjavnou výhodou PEM je, že sa dá bezpečne vložiť do tela e-mailovej správy, pretože má kotviace riadky a je 7-bitovo čistý.
V dokumente RFC1422 sú uvedené ďalšie podrobnosti o štandarde PEM, ktoré sa týkajú kľúčov a certifikátov.
Niekedy je súbor .crt
už súborom .pem
. Pozri: https://stackoverflow.com/questions/991758/openssl-pem-key