crt tanúsítvány létrehozása és láncolt CRT-fájl készítése OpenSSL eszközökkel

A szöveg fő témája a CRT-típusú tanúsítványok előállítása, a nyilvános kulcsú infrastruktúra (PKI) részei, és a tanúsítványlánc összeállításának gyakorlati lépései. A cikk összegyűjti a különböző formátumok közötti konverziók, a chain (lánc) létrehozásának és telepítésének alapelveit, valamint a gyökér-, köztes- és végfelhasználó tanúsítványok szerepét.

A tanúsítványok alapfogalmai

A PEM formátumú tanúsítványok legtöbbször .crt, .pem, .cer kiterjesztésekkel érhetők el, és Base64 ASCII kódolásban tárolják őket a „-----BEGIN CERTIFICATE-----” és „-----END CERTIFICATE-----” sorok között. A DER formátum inkább bináris, gyakran Java környezetekben használatos. A PKCS#12 vagy PFX formátum egy titkosított bináris konténer, amely egy tanúsítványt és a hozzá tartozó privát kulcsot tartalmazhat. A P7B (PKCS#7) gyakran csak tanúsítványokat tartalmaz lánccal, privát kulcsot nem. A PEM és DER közti konverzió gyakori feladat a különböző szerverek és rendszerek között történő telepítéshez.

A lánc fogalma és elhelyezésének szabályai

A tanúsítványláncban általában három szint található: gyökértanúsítvány (root), köztes tanúsítvány (intermediate) és a végfelhasználó/domain tanúsítvány. Fontos megjegyzés: a domain tanúsítványt nem szabad belefoglalni a láncba; a láncban csak a köztes és gyökér tanúsítványok szerepelnek. A lánc segíti a kliens oldali megbízhatóságot és az ellenőrzési folyamatot, amikor a böngésző vagy a szerver felhasználói csatlakoznak egy HTTPS/TLS kapcsolat során.

Lépésről lépésre: hogyan hozzunk létre láncolt CRT-fájlt OpenSSL-lel

  1. Először készítsen privát kulcsot és saját CSR-t (Certificate Signing Request): Létrehoz egy myserver.key és egy server.csr fájlt. A CSR tartalma a domain és szervezet adatait tartalmazza.

  2. A CSR-t küldje el a hitelesítési hatóságnak (CA). A CA kiad egy végfelhasználó tanúsítványt (pl. server.crt) és szükség esetén köztes tanúsítványt (pl. intermediate.crt).

  3. Szerezze be a gyökér-tanúsítványt és a köztes tanúsítványokat, majd ezeket összeállítva hozza létre a láncot: köztes + gyökér.

  4. Helyezze el a domain tanúsítványt a láncba úgy, hogy a domain tanúsítvány ne kerüljön a láncba. A végfelhasználó oldalán a kliens által megbízható láncnak kell megjelenni.

  5. Converziók és formátumok: szükség lehet a CRT és a KEY fájlok DER- vagy PEM-formátumba történő konvertálására, illetve a CA-bundle létrehozására (gyökér- és köztes tanúsítványokat tartalmazó csomag). A PEM formátumú fájlokat külön-külön vagy egyesítve is használhatja a szerver szoftverekkel.

Formátumok és konverziók röviden

  • PEM formátum: tartalmazhat tanúsítványt és/vagy privát kulcsot, tipikusan .pem, .crt, .cer és .key kiterjesztésekkel. Kezdő sorok: „-----BEGIN CERTIFICATE-----” és záró sorok: „-----END CERTIFICATE-----”.
  • DER formátum: bináris kódolás, nincs olvasható BEGIN/END fejléc. Java környezetekben gyakori.
  • PKCS#12 / PFX formátum: bináris konténer, amely a tanúsítványt és a privát kulcsot egy titkosított fájlban tárolja (általában .p12 vagy .pfx, jelszóval védve).
  • PKCS#7 / P7B formátum: csak tanúsítványokat tartalmaz, privát kulcs nincs benne. Gyakori Windows/JAVA környezetben.

Gyakorlati útmutató a lánc létrehozásához Linuxon az OpenSSL használatával

OpenSSL egy népszerű és nyílt forráskódú eszközkészlet az X.509 tanúsítványok, CSR, kulcsok kezelésére. A következő lépések általánosak:

  1. Lépjen be a szerverre, és generáljon egy privát kulcsot és CSR-t: openssl genrsa -out myserver.key 2048 és openssl req -new -key myserver.key -out server.csr.

  2. Küldje a CSR-t a CA-nak, majd kapja vissza a domain tanúsítványt (például server.crt) és szükség esetén köztes tanúsítványt (intermediate.crt).

  3. Hozza létre a láncot úgy, hogy a chain vagy CA_bundle tartalmazza a köztes és gyökértanúsítványt (például intermediate.crt + rootCA.crt).

  4. Konvertálja a tanúsítványokat a kívánt formátumba a szerver követelményei szerint (például PEM vagy PKCS#12). OpenSSL parancsok: - PEM konverzió és összefűzés: cat server.crt intermediate.crt rootCA.crt > chain.pem - PKCS#12 létrehozása: openssl pkcs12 -export -out bundle.pfx -inkey myserver.key -in server.crt -certfile chain.pem

A lánc helyes használata a szervereken

A legtöbb szerver (például Apache, Nginx) külön-külön kezeli a privát kulcsot és a tanúsítványt. A láncot a tanúsítványköteggel (CA bundle vagy chain file) lehet mellékelni, hogy a kliens oldali megbízhatóság megmaradjon. Windows környezetben gyakori a PFX/PKCS#12 formátum, amely tartalmazza a privát kulcsot és a tanúsítványláncot is, így egyszerűen importálható.

Tippek a gyakorlati hibakereséshez

  • Ha a böngésző jelzi a „megbízhatatlan” CA-t, ellenőrizze, hogy a gyökér- és köztes tanúsítványok megfelelően kerültek-e a láncba és a szerver megfelelően szolgálja-e ki a chain.pem-et.
  • Ha a PEM fájlok között több entitás van, győződjön meg róla, hogy a megfelelő sorrendben szerepelnek a chain-ben: domain cert, köztes cert, gyökér cert.
  • A privát kulcsot mindig védje jelszóval (különösen PKCS#12 használatakor), és soha ne tegye nyilvánosan hozzáférhető helyre.

Az OpenSSL alapvető összefüggései

OpenSSL a következő fő elemeket kezeli: tanúsítványok (certificate), kulcsok (private/public key), és CSR-ek. A PEM és DER közötti konverziók, a különböző konténerek és kódolások összekapcsolása gyakran elkerülhetetlen a különböző környezetek telepítésénél. A legtöbb esetben a lánc a gyökér- és köztes tanúsítványokból áll, a domain tanúsítványt pedig nem érdemes belefoglalni a láncba.

Rövid példák a gyakorlati parancsokra

Gyökér- és köztes tanúsítványok összefűzésére és egy PEM lánc létrehozására: cat intermediate.crt rootCA.crt > chain.pem

Domain tanúsítvány és privát kulcs PKCS#12-ba való konvertálásához: openssl pkcs12 -export -out domain.pfx -inkey domain.key -in domain.crt -certfile chain.pem

Infografika: SSL/TLS tanúsítványok rétegei és a lánc felépítése

A cikkben összegyűjtött képletek és útmutatók segítségével megértheti a CRT-típusú tanúsítványok létrehozásának és láncolásának alapelveit, valamint a különböző formátumok közötti konverziók fontosságát a különböző platformokon történő telepítés során.

Tábla: fontos formátumok és jellemzőik

FormátumJellemzőkHasználat
PEMBase64 kódolt, BEGIN/END sorokÁltalános tanúsítvány és kulcs
DERBináris kódolásJava/alkalmazások
PKCS#7 / P7BCsak tanúsítványokKliens/gyakori Windows
PKCS#12 / PFXBináris konténer, privát kulcsWindows import/export

tags: #crt #tanusitvany #letrehozasa

Népszerű bejegyzések: