Kezdőlap > PKI > Pfx előállítása – 2/2

Pfx előállítása – 2/2


(az előző folytatása)

Különböző formátumú tanúsítványok közti konverzió

Szokásomhoz híven előbb leírom az általános információkat, majd onnan közelítek a felmerült kérdés megoldásához. Elég sok eszköz van, amivel tanúsítványokat tudunk kezelni, ebből most hármat említek meg. Használhatnánk a (cikkeimben nem egyszer említett) Certutil, a Pvk2Pfx segédprogramokat, de talán a legismertebb (szerencsére Windowsra is elérhető) az OpenSSL. Ugyanakkor fontos tudni, hogy néha nem mindig használható minden eszköz, például egy OpenSSL által előállított kulcs-állomány nem feltétlenül kompatibilis a másik két alkalmazással, vagy egy Makecert által létrehozott kulcs esetenként csak a Pvk2pfx-el kompatibilis.

Nézzük sorra. Induljunk ki abból, hogy rendelkezésünkre áll a tanúsítvány, valamint a privát kulcs, ebből kell .pfx-et gyártanunk.

Pvk2pfx használatával:

Pvk2pfx –pvk certfile.pvk –spc certfile.cer –out certfile.pfx

Certutil használatával:

Certutil –MergePFX certfile.cer certfile.pfx

Mivel a paraméterezés alapján nem tudjuk megadni a privát kulcs állományát, arra kell figyeljünk, hogy ennek elnevezése ugyanaz kell legyen, mint a tanúsítvány-állománynak (s helyileg is egy könyvtárban kell legyenek), a kiterjesztése viszont kötelezően .key kell legyen.

OpenSSL használata:

Tekintettel arra, hogy az eredeti feladatban nem állt rendelkezésünkre a csak privát kulcsot tartalmazó állomány, ezt ki kell nyernünk, ehhez meg az egyik legkönnyebb mód ezen program használata. Ezért is egy kicsit jobban fogom részletezni, ugyanakkor megragadom az alkalmat többféle konverzió menetének leírására is.

A program használata során érdemes figyelni arra, hogy vagy mindent egy helyre másoljunk, vagy az útvonalak helyesek legyenek, különben system library:fopen:No such file or directory:.\crypto\bio\bss_file.c hibaüzenet jöhet, ami nem a bss_file.c hiányát jelzi 🙂

Mielőtt még leírnám az utasításokat, nézzük, a paraméterek mit takarnak:

–       Certificate: a tanúsítvány(oka)t (esetleg privát kulcsot) tartalmazó állomány

–       CAcert: a tanúsítvány-kiszolgáló tanúsítványa

–       PrivateKey: a tanúsítvány privát kulcsa

PEM
PEM -> DER

openssl x509 -outform der -in Certificate.pem -out Certificate.der

PEM -> P7B

openssl crl2pkcs7 -nocrl -certfile Certificate.cer -out Certificate.p7b -certfile CAcert.cer

PEM -> PFX

openssl pkcs12 -export -out Certificate.pfx -inkey PrivateKey.key -in certificate.crt -certfile CAcert.crt

PEM -> KEY

Pfx-ből exportálva (lásd később) a kulcsot PEM formátumban kapjuk meg, ekkor a kulcs még titkosított formában van, ennek a titkosításnak az eltávolítása:

openssl rsa -in PrivateKey.pem -out PrivateKey.key

DER

DER -> PEM

openssl x509 -inform der -in Certificate.cer -out Certificate.pem

P7B

P7B -> PEM

openssl pkcs7 -print_certs -in Certificate.p7b -out Certificate.cer

P7B -> PFX

openssl pkcs7 -print_certs -in Certificate.p7b -out Certificate.cer

openssl pkcs12 -export -in Certificate.cer -inkey PrivateKey.key -out Certificate.pfx -certfile CAcert.cer

PFX

PFX -> PEM

openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes

Megjegyzés: A PFX-ből a PEM formátumba konvertálás folyamán az OpenSSL a tanúsítványokat és privát kulcsot egy állományba helyezi. A különválasztáshoz megnyitjuk az állományt egy szövegszerkesztőben, és átmásoljuk az egyes tanúsítványokat és a privát kulcsot (beleértve a BEGIN / END bejegyzéseket is) a saját egyéni szöveges állományukba, külön mentve őket Certificate.cer, CAcert.cer, PrivateKey.key néven. Az ömlesztett állomány a következő sorrendben tartalmazza őket: a privát kulcs, a tanúsítvány, a gyökér tanúsítványa, esetleges köztes tanúsítványok.

Csak a tanúsítvány exportálása:

openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out cert.pem

A privát kulcs exportálása:

openssl pkcs12 -in certificate.pfx -nocerts -out PrivateKey.pem

A kiinduló kérdés megoldása:

A végcélként egy .pfx állományt tervezünk, aminek a neve a %Pfx% változóban lesz. A nyersanyagunk egy .P7b állomány, ami a felmenő tanúsítvány-láncot tartalmazza (ez lesz a %CA%), valamint a megújított tanúsítvány .Crt formátumban (ez pedig a %Crt%). Mivel írtuk, hogy ezen felül még szükséges a privát kulcs, ezért az első lépés a sikeres művelethez exportálni (pl. MMC-konzolból) a jelenlegi tanúsítványt, privát kulccsal (az %OldCert% változóban megadott állományba).

Az exportált OldCert.Pfx állományból kiexportáljuk a privát kulcsot (ez lesz a %Key%):

Set %UtilPath% = c:\Program Files (x86)\GnuWin32\bin
“%UtilPath%\OpenSSL” pkcs12 -in %OldCert% -nocerts -out %Key%

Itt a kapott PrivateKey.pem állományt vagy tovább „tisztítjuk”, azaz eltávolítjuk a titkosítást, vagy „nyers” formátumban felhasználjuk – ekkor arra figyeljünk, hogy előbb a .pem titkosítási jelszavát kéri be, s csak utána a készülendő .pfx állomány titkosítására használt jelszót.

Utolsó lépésként összefűzzük a kapott állományokat (haladó felhasználóként megspékeljük az eredeti utasítást azzal, hogy a CA nem .crt, valamint a privát kulcs nem .key formátumú):

“%UtilPath%\OpenSSL” pkcs12 -export -out %NewPfx% -inkey %Key% -in %Crt% -certfile %CA%

A futtatás során megadjuk az előbb említett, titkosításhoz használt két jelszót (a privát kulcs titkosítását feloldó, valamint a készülő állomány titkosítására használtat), s máris előállt a kért állomány.

Reklámok
Kategóriák:PKI Címke:
  1. augusztus 14, 2013 - 1:56 de.

    “a kulcsot PEM formátumban kapjuk meg, ekkor a kulcs még titkosított formában van, ennek a titkosításnak az eltávolítása”

    Itt kicsit “mire gondlt a költő” érzésem támadt. Valójában a PEM formátumban nem titkosított formátumban van a kulcs (amennyire tudom, nincs rajta konkrét titkosítás így se meg úgy se), hanem _jelszóval védett_, az idézett szöveg alatti parancs pedig a jelszó követelésének eltávolítására szolgál.

    • augusztus 14, 2013 - 8:46 de.

      Köszönöm a tisztázást 🙂

  1. No trackbacks yet.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: