OpenSSL alapok - exportálás, importálás, formátumok átalakítása.
2018. jún. 12. | Pataki Tamás
Az SSL-tanúsítványok minden platformon elterjedtek, és időről időre szükség van a tanúsítvány átvitelére a szerverek között, vagy más módon kell vele dolgozni. A GeoTrust és a RapidSSL tanúsítványok tulajdonosai korlátlan számú szerveren használhatják tanúsítványukat, így a tanúsítvány-átalakítási útmutató minden bizonnyal jól jön majd.
```htmlPFX (PKCS#12) tanúsítvány kezelése
A PFX formátum (pontosabban PKCS#12) a Microsoft platformokon arra szolgál, hogy a bináris tanúsítványt a privát kulccsal és közbenső tanúsítványokkal tároljuk. Gyakorlatilag Windows és Microsoft szervereken találkozhat vele, amikor tanúsítványt importál vagy exportál.
PFX (P12) fájl létrehozása OpenSSL-ben
PFX fájlt OpenSSL-ben például akkor hozhat létre, amikor tanúsítványt visz át egy Linux szerverről egy Microsoft szerverre.
openssl pkcs12 -export -out kimenet.pfx -inkey privátkulcs.key -in tanusitvany.cer -certfile közbenső.pem
A tanúsítvány privát kulccsal való kombinálásával kap egy PFX fájlt. Ha további tanúsítványokat, például Intermediate-t szeretne hozzáadni, megteheti az -in paraméterrel; például -in intermediate.cer
Kulcsok exportálása PFX-ből
Ha az SSL tanúsítványt PFX formátumban másik szerverre kívánja áthelyezni, akkor a PFX-ből ki kell exportálni a privát kulcsot és a tanúsítványt. Gyakran a tanúsítvány áthelyezése Microsoft szerverről Linux szerverre történik, mivel a GeoTrust (és RapidSSL) korlátlan tanúsítványlicence nem korlátozza a tanúsítvány használatát több szerveren.
Az "összes", tehát a privát kulcs exportálása a következő paranccsal történik:
openssl pkcs12 -in file.pfx -out file.pem -nodes
Az eredmény egy áttekinthető PEM fájl az összes tanúsítvánnyal, amely a PFX-ben volt. A végén van az íratlan privát kulcs, amelyet a -nodes paraméter biztosít (nincs DES).
A tanúsítványok tárolására használt formátumok
A tanúsítványok között használt formátumokkal való alapvető eligazodáshoz rövid áttekintést nyújtok. Általában a fájlkiterjesztés nem határozza meg a tanúsítvány formátumát; a fájl tartalma a fontos.
Tanúsítványokkal bináris vagy szöveges (Base64) formában dolgozhat. Az egyik vagy másik formátumban van-e a tanúsítvány, felismerhető a kiterjesztés vagy a fájltartalom alapján, amelyet például a Notepad-ban megnyithat.
PEM formátum
A leggyakrabban használt formátum. A tanúsítvány szöveges formában, Base64 (ASCII karakterek) formátumban van és ebben a formában tanúsítja a tanúsító hatóságokat, ugyanabban a formátumban, amelyet e-mailben kap az SSLmarketből. A tanúsítványt a "-----BEGIN CERTIFICATE-----" és "-----END CERTIFICATE-----" karakterlánc öleli körül, amely része a tanúsítványnak.
Az Apache szerver (és sok más) PEM tanúsítványokat használ; a tanúsítvány és a privát kulcs egyazon fájlban lehet tárolva. A PEM formátum jellemzően kiterjesztéseket használ, mint például .pem, .crt, .cer, és .key.
DER formátum
A korábbi típustól eltérően a DER formátum bináris. A Notepad-ban megnyitva nem láthat semmi "értelmeset". Gyakran használják Java platformokon. A fájl kiterjesztése .der vagy .cer.
PKCS#7 vagy P7B formátum
Ez a formátum ismét Base64 és ASCII karaktereket használ, egy fájlban több tanúsítvány található, szemben a PEM formátummal. Tartalmazza a tanúsítványt és a közbenső tanúsítványait, de a privát kulcsot nem.
Ennek a formátumnak a szokásos kiterjesztései a .p7b és .p7c. Főként a Microsoft platformokon és Tomcat-en találkozhat velük.
PKCS#12 vagy PFX
Mint fentebb említettük, ez a formátum a tanúsítványt a privát kulccsal együtt, valamint esetleg a lánc egyéb tanúsítványait (Intermediate tanúsítványok) tárolja. Egy fájlba minden, amire szüksége van a tanúsítvány működtetéséhez, tárolva van. A formátum bináris, amelyet főként Windows és Microsoft Szervereken használnak. Jellemző kiterjesztések a .pfx vagy .p12.
Tanúsítvány konverzió különböző formátumok között
A következő parancsokat használja az OpenSSL-ben a tanúsítvány más formátumba való konvertálásához.
PEM tanúsítvánnyal dolgozás
A PEM formátum a tanúsítványt szöveges formában Base64 formátumban tárolja. Ez a leguniverzálisabb és leggyakrabban használt formátum.
PEM konvertálása DER-re
A Base64 szöveges tanúsítványt binárissá változtatja.
openssl x509 -outform der -in tanusitvany.pem -out tanusitvany.der
PEM konvertálása P7B-re
openssl crl2pkcs7 -nocrl -certfile tanusitvany.cer -out tanusitvany.p7b -certfile CACert.cer
PEM konvertálása PFX-re
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
DER tanúsítvánnyal dolgozás
DER egy bináris tanúsítvány formátum. Nem használhatja szöveges formában (nem másolhatja e-mailbe, stb.).
DER konvertálása PEM-re
openssl x509 -inform der -in tanusitvany.cer -out tanusitvany.pem
P7B tanúsítvánnyal dolgozás
A P7B formátum több tanúsítványt tartalmaz, de nem tartalmaz privát kulcsot. Például tanúsítványlánc tárolására használják.
P7B konvertálása PEM-re
openssl pkcs7 -print_certs -in tanusitvany.p7b -out tanusitvany.cer
P7B konvertálása PFX-re
Először a P7B-ből exportálja a tanúsítványt:
openssl pkcs7 -print_certs -in tanusitvany.p7b -out tanusitvany.cer
Ezután hozzáteszi a privát kulcsot (.key) és közbenső tanúsítványokat (CACert.cer) és összefogja őket egy PFX-be:
openssl pkcs12 -export -in tanusitvany.cer -inkey privátkulcs.key -out tanusitvany.pfx -certfile CACert.cer
PFX tanúsítvánnyal dolgozás
A PFX formátum tartalmazza a tanúsítványt és a jelszó által védett privát kulcsot. A tanúsítvány használatakor ismernie kell és meg kell adnia ezt a jelszót az OpenSSL-ben.
PFX konvertálása PEM-re
openssl pkcs12 -in tanusitvany.pfx -out tanusitvany.cer -nodes
A tanúsítvány és a privát kulcs egyetlen PEM fájlba van tárolva, amelyből kimentheti őket.
Referenciák:
http://www.openssl.org/docs/apps/openssl.html
https://www.sslshopper.com/ssl-converter.html
```htmlBiztonságos SSL tanúsítványok szakértője
Symantec Sales Expert Plus
e-mail: pataki(at)zoner.hu