OpenSSL egy nyílt forráskódú kriptográfiai könyvtár, amely számos olyan parancsot tartalmaz, amelyeket a(z) TLS protokoll és a(z) nyilvános kulcsú infrastruktúra során használnak. Az OpenSSL 1998-ban jelent meg, és Windows, Linux, macOS, valamint BSD rendszerekre érhető el. Az OpenSSL parancs segít a különböző feladatok elvégzésében, beleértve a tanúsítvány-aláírási kérelmet (CSR), a privát kulcsok generálását és az SSL-tanúsítást.
Az OpenSSL azért fontos, mert biztosítja a megfelelő SSL-implementációt. Az SSL megfelelő módon történő beszerzése kulcsfontosságú a webhely biztonsága szempontjából. Ráadásul a Google, amely egy vezető keresőmotor, előnyben részesíti az SSL-tanúsítvánnyal rendelkező webhelyeket. Egyes böngészők, mint például a Chrome és a Firefox, „Nem biztonságos” jelöléssel láthatják el a webhelyet, ha nem rendelkezik megfelelő SSL-tanúsítvánnyal. Ezért rendkívül fontos, hogy a webhely forgalmát a titkosított HTTPS protokollon keresztül szolgálja ki.
Legelőször is
Ez az útmutató egy puskaszerű segédlet, amely tartalmaz néhány, de valószínűleg nem az összes olyan OpenSSL parancsot, amelyet a mindennapi forgatókönyvek során használhat.
Az első rész elmagyarázza mindazt, amit a(z) tanúsítvány-aláírási kérelmekről (CSR) tudni kell. Ha azonban már ismeri ezt, átugorhat bármely más szakaszra, amely releváns az elérendő cél szempontjából. Minden szakasz tartalmaz egy parancssori részletet az alcímben megfogalmazottak megvalósításához.
Kezdjük el!
1. szakasz: A tanúsítvány-aláírási kérelmek (CSR) megértése
A tanúsítvány-aláírási kérelem előfeltétele az SSL-tanúsítvány hitelesítésszolgáltatótól (CA) történő beszerzésének. A CSR tartalmazza egy kulcspár nyilvános kulcsát és néhány további információt. Ezeket az aláírási folyamat során be kell illesztenie a tanúsítványba.
A CSR generálása során a rendszer azonosító adatok megadására kéri, amelyet Distinguished Name-nek (DN) neveznek. A DN tartalmazza a tanúsítványhoz szükséges mezőket, mint például a Common Name (CN), amely a tanúsítványt használó állomás pontos, teljes tartományneve (FQDN). A DN többi mezője további információkra szolgál, mint például az ország, az állam/megye, a település neve, valamint a szervezet vagy a vállalkozás neve, ha kifejezetten a vállalkozására szabott tanúsítványokat generál. Dönthet úgy is, hogy kihagyja a kérdéseket, ha az információkat egy fájlból vagy a parancssorból adja meg.
Tekintse meg a CSR-információk bekérésének példáját az alábbi képernyőképen:
|
1 2 3 4 5 6 7 |
Ország Név (2 betűs kód) [AU]:CH Állam vagy Tartomány Név (teljes név) [Some-State]:Zürich Helység Név (pl., város) []:Old Town Szervezet Név (pl., vállalat) [Internet Widgits Pty Ltd]:Example Cloudsigma Vállalat Szervezeti Egység Név (pl., részleg) []:Cloud Technology Common Name (e.g. szerver FQDN vagy AZ ÖN neve) []:cloudsigma.com E-mail Cím []:info@cloudsigma.com |
Az információkat egyetlen sorból álló parancsban is megadhatja a kérdések elkerülése érdekében, ha hozzáadja a -subj jelzőt az alábbiak szerint, és megadja a mezők adatait:
|
1 |
-subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
A fenti parancs ugyanazokat az információkat veszi át, mint amelyek a CSR-információk bekérését bemutató kódblokk-példában szerepelnek.
2. szakasz: Tanúsítvány-aláírási kérelmek generálása
Ebben a szakaszban azokat az OpenSSL parancsokat ismertetjük, amelyeket a CSR és a privát kulcsok generálásához használhat. A CSR-ek szükségesek az SSL-tanúsítványok hitelesítésszolgáltatótól (CA) történő igényléséhez.
Privát kulcs és tanúsítvány-aláírási kérelem generálása
Ezt a módszert akkor használhatja, ha egy hitelesítésszolgáltató által kibocsátott SSL-tanúsítvánnyal szeretné biztosítani a(z) Apache vagy Nginx szerver a forgalom HTTPS-en, azaz TLS-sel ellátott HTTP-n keresztüli kiszolgálásához. Az ezzel a paranccsal generált CSR elküldhető egy CA-nak a CA által aláírt SSL-tanúsítvány igényléséhez. Követheti részletes útmutatóinkat arról, hogyan állíthatja be az Apache vagy Nginx szervereit Ubuntu-n.
Írja be a következő parancsot a terminálba egy 2048 bites privát kulcs (domain.key) és CSR (domain.csr) létrehozásához a semmiből:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr |
Válaszoljon a kérdésekre a konkrét CSR-információival. Opcionálisan hozzáadhatja a -subj jelzőt a parancshoz, hogy elkerülje a kérdéseket:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
A -newkey rsa:2048 jelző meghatározza, hogy a kulcsot a 2048 bites RSA algoritmussal kell generálni. A -nodes jelző azt jelzi, hogy nincs jelmondatos titkosítás a privát kulcshoz. Van egy -new opció is, amely nincs benne, de magától értetődő, jelezve, hogy új CSR generálódik.
Tanúsítvány-aláírási kérelem (CSR) generálása meglévő privát kulcsból
Ha már rendelkezik privát kulccsal, akkor ezt a módszert használhatja a CSR generálására. Ezt követően ezzel igényelhet SSL-tanúsítványt egy CA-tól. Írja be a következő parancsot egy új CSR (domain.csr) generálásához egy meglévő privát kulcs (domain.key):
|
1 |
openssl req -key domain.key -new -out domain.csr |
Válaszoljon a kérdésekre a konkrét CSR-információival. Opcionálisan hozzáadhatja a -subj jelzőt a parancshoz, hogy elkerülje a kérdéseket:
|
1 |
openssl req -key domain.key -new -out domain.csr -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
A -key jelző határozza meg a meglévő privát kulcsot (domain.key), amelyet az új CSR generálásához kell használni. A -new jelző azt jelzi, hogy új CSR generálása történik.
Tanúsítvány-aláírási kérelem generálása meglévő tanúsítványból és privát kulcsból
Ha már rendelkezik egy meglévő tanúsítvánnyal, amelyet fel szeretne használni egy CSR generálásához, akkor ezt a módszert használhatja. Ez a módszer akkor lehet hasznos, ha Ön vagy a CA elveszíti az eredeti CSR-t, és a korábban megadott CSR-információk felhasználásával kell azt legenerálnia anélkül, hogy újra meg kellene adnia azokat. A parancs kinyeri az információkat a meglévő tanúsítványból. Írja be a következő parancsot a terminálba egy új CSR (domain.csr) létrehozásához egy meglévő tanúsítvány (domain.crt) és egy meglévő privát kulcs (domain.key):
|
1 |
openssl x509 -in domain.crt -signkey domain.key -x509toreq -out domain.csr |
A -x509toreq opció azt jelzi, hogy az X509 tanúsítványt használja a CSR generálásához.
3. szakasz: SSL-tanúsítványok generálása
Bizonyos helyzetekben előfordulhat, hogy SSL-tanúsítványt szeretne használni anélkül, hogy CA által aláírt tanúsítvány beszerzésével bajlódna. Ez a szakasz bemutatja, hogyan írhatja alá saját tanúsítványait. Ez érvényes és ingyenes. Ezeket a tanúsítványokat önaláírt tanúsítványoknak nevezik, és meglehetősen elterjedtek.
Az önaláírt tanúsítványt a saját privát kulcsával írják alá. Mind az önaláírt, mind a CA által aláírt tanúsítványok ugyanúgy működnek az adatok és a webhely forgalmának titkosítására. Az önaláírt tanúsítványok esetében azonban a felhasználók általában figyelmeztetést kapnak a böngészőjükben, hogy a tanúsítvány nem megbízható. Ezért az önaláírt tanúsítványokat olyan webhelyekhez használhatja, amelyek nem cserélnek érzékeny információkat a felhasználókkal, vagy nem éles környezetben lévő szervereken. Alább megtalálja azokat az OpenSSL parancsokat, amelyeket az önaláírt tanúsítványok generálásához használhat.
- Önaláírt tanúsítvány generálása
Ezzel a módszerrel SSL-tanúsítványt generálhat Apache vagy Nginx szervere biztosításához. Ez biztosítja, hogy a forgalom HTTPS-en vagy HTTP over TLS-en keresztül bonyolódjon, anélkül, hogy hitelesítésszolgáltatóhoz (CA) kellene fordulnia a tanúsítvány aláírásáért:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt |
Válaszoljon a kérdésekre a saját CSR-információival. Opcionálisan hozzáadhatja a(z) -subj jelzőt a parancshoz, hogy elkerülje a kérdéseket:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
A(z) -x509 jelző egy önaláírt tanúsítvány létrehozását jelzi. A(z) -days 365 opció megadja, hogy hány napig lesz érvényes a tanúsítvány. Ebben az esetben ez 365 nap. Más számú napot is választhat. A parancs egy ideiglenes CSR-t generál a tanúsítványhoz társítandó információk tárolására.
- Önaláírt tanúsítvány generálása meglévő privát kulcsból
Ez a módszer segít önaláírt tanúsítványt generálni a már meglévő privát kulcsából. Írja be a következő parancsot egy önaláírt tanúsítvány (domain.crt) generálásához egy meglévő privát kulcs (domain.key):
|
1 |
openssl req -key domain.key -new -x509 -days 365 -out domain.crt |
Adja meg a kérdésekre a saját CSR-információit. Opcionálisan hozzáadhatja a(z) -subj jelzőt a parancshoz, hogy elkerülje a kérdéseket:
|
1 |
openssl req -key domain.key -new -x509 -days 365 -out domain.crt -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
A(z) -x509 jelző egy önaláírt tanúsítvány létrehozását jelzi. A(z) -days 365 opció megadja, hogy hány napig lesz érvényes a tanúsítvány. Ebben az esetben ez 365 nap. Más számú napot is választhat. A(z) -new opció elindítja a CSR-információk bekérését.
4. szakasz: Tanúsítványok megtekintése
A tanúsítványok és a CSR-fájlok kódolva vannak, és a(z) .pem kiterjesztéssel kerülnek tárolásra. Ez a Privacy-Enhanced Mail rövidítése. Ez egy fájlformátum kriptográfiai kulcsok, tanúsítványok és egyéb kulcsfontosságú adatok tárolására és küldésére. A PEM-fájlok az emberek számára nem olvashatók közvetlenül. Ebben a szakaszban olyan parancsokat talál, amelyekkel megtekintheti a kódolt PEM-fájlok bejegyzéseit.
- CSR-fájlok megtekintése
Írja be a következő parancsot egy CSR (domain.csr) tartalmának megtekintéséhez és ellenőrzéséhez a terminálon:
|
1 |
openssl req -text -noout -verify -in domain.csr |
Például a fenti parancs kimenete valami hasonló lehet:

- Tanúsítványbejegyzések megtekintése
Írja be a következő parancsot egy tanúsítvány (domain.crt):
|
1 |
openssl x509 -text -noout -in domain.crt |
A fenti parancs kimenete valami hasonló lehet:

- Annak ellenőrzése, hogy a tanúsítványt egy hitelesítésszolgáltató írta-e alá
Annak ellenőrzéséhez, hogy egy tanúsítványt (domain.crt) egy bizonyos CA-tanúsítvány (ca.crt) írt-e alá, írja be a következő parancsot:
|
1 |
openssl verify -verbose -CAfile ca.crt domain.crt |
5. szakasz: Privát kulcsok
Ha a privát kulcsok létrehozásához és ellenőrzéséhez szükséges OpenSSL-parancsokat keresi, ez a szakasz Önnek szól.
- Privát kulcs létrehozása
Egy jelszóval védett, 2048 bites privát kulcs (domain.key) létrehozásához írja be a következő parancsot a terminálba:
|
1 |
openssl genrsa -des3 -out domain.key 2048 |
A parancs jelszót fog kérni a folyamat befejezéséhez. Lásd az alábbi képernyőképet:

- Privát kulcs ellenőrzése
Egy privát kulcs (domain.key) érvényességének ellenőrzéséhez írja be a következő parancsot a terminálba:
|
1 |
openssl rsa -check -in domain.key |
Ezután meg kell adnia egy jelszót. Ha a privát kulcs titkosítva van, és a helyes jelmondatot adja meg, a titkosítatlan kulcs megjelenik a terminálon. Lásd az alábbi képernyőképet:

- Ellenőrizze, hogy a privát kulcs megegyezik-e a tanúsítvánnyal és a CSR-rel
Ha ellenőrizni szeretné, hogy egy privát kulcs (domain.key) megegyezik-e egy tanúsítvánnyal (domain.crt) és egy CSR-rel (domain.csr), írja be a következő parancsokat a terminálba:
|
1 2 3 |
openssl rsa -noout -modulus -in domain.key | openssl md5 openssl x509 -noout -modulus -in domain.crt | openssl md5 openssl req -noout -modulus -in domain.csr | openssl md5 |
Ha azt tapasztalja, hogy a fenti parancsok kimenete megegyezik, akkor lehetséges, hogy a privát kulcs, a tanúsítvány és a CSR összetartoznak.
- Privát kulcs titkosítása
Ha rendelkezik egy titkosítatlan privát kulccsal (unencrypted.key) és szeretné megkapni a kulcs titkosított verzióját (encrypted.key), írja be a következő parancsot a terminálba:
|
1 |
openssl rsa -des3 -in unencrypted.key -out encrypted.key |
A parancs kérni fog egy jelmondatot a privát kulcs titkosításához.
- Privát kulcs visszafejtése
Ha rendelkezik egy titkosított privát kulccsal (encrypted.key) és szeretné megkapni annak visszafejtett verzióját (decrypted.key), írja be a következő parancsot a terminálba:
|
1 |
openssl rsa -in encrypted.key -out decrypted.key |
A parancs kérni fogja a titkosított kulcs jelmondatát. Ha a helyes jelmondatot adja meg, a kulcs visszafejtésre kerül. A kimenet ide kerül: decrypted.key.
6. szakasz: Tanúsítványformátumok konvertálása
Megfigyelhette, hogy eddig X.509 tanúsítványokkal dolgoztunk, amelyek ASCII PEM kódolásúak. Bár ez teljesen megfelelő, számos más tanúsítványkódolási és konténertípus is létezik, amelyeket használhat. Bizonyos alkalmazásokban előnyben részesíthet bizonyos formátumokat másokkal szemben. Ezenkívül néhány eltérő formátum több elemet is tartalmazhat egyetlen fájlban, például egy privát kulcsot, egy CSR-t és egy CA által aláírt tanúsítványt. Az OpenSSL-t a különböző tanúsítványformátumok közötti konvertálásra is használhatja. Olvasson tovább a tanúsítványformátumok konvertálására szolgáló OpenSSL-parancsokért.
- PEM konvertálása DER formátumba
A DER (Distinguished Encoding Rules) egy bináris kódolás az X.509 tanúsítványokhoz és privát kulcsokhoz. Egy PEM-kódolású tanúsítvány (domain.crt) DER-kódolású tanúsítvánnyá (domain.der) történő konvertálásához írja be a következő parancsot:
|
1 |
openssl x509 -in domain.crt -outform der -out domain.der |
A DER kódolási formátum legtöbb felhasználási esetével a Java programozási nyelvben találkozhat. Kövesse ezt az útmutatót a Java gyors beállításához az Ubuntu szerverén.
- DER konvertálása PEM formátumba
Egy DER-kódolású tanúsítvány (domain.der) PEM tanúsítvánnyá (domain.crt) történő konvertálásához írja be a következő parancsot:
|
1 |
openssl x509 -inform der -in domain.der -out domain.crt<code> |
- PEM konvertálása PKCS7 formátumba
Előfordulhat, hogy PEM tanúsítványokat, például a domain.crt és ca-chain.crt fájlokat szeretné hozzáadni egy PKCS7 fájlhoz (domain.p7b). Íme az ehhez szükséges parancs:
|
1 |
openssl crl2pkcs7 -nocrl -certfile domain.crt -certfile ca-chain.crt -out domain.p7b |
A -certfile opciót többször is használhatja a PKCS7 fájlhoz hozzáadni kívánt tanúsítványok megadásához. A PKCS7 fájlok leginkább a Java Key store-ok és a Microsoft IIS esetében relevánsak. Más néven P7B fájlok, ezek olyan ASCII fájlok, amelyek tanúsítványokat és CA által aláírt tanúsítványokat tartalmazhatnak.
- PKCS7 konvertálása PEM formátumba
Egy PKCS7 fájl (domain.p7b) PEM kódolású fájllá (domain.crt) történő konvertálásához írja be a következő parancsot a terminálba:
|
1 |
openssl pkcs7 -in domain.p7b -print_certs -out domain.crt |
- PEM konvertálása PKCS12 formátumba
Egy privát kulcs (domain.key) és egy tanúsítvány (domain.crt) egyesítéséhez egy PKCS12 fájl (domain.pfx) létrehozásához írja be a következő parancsot:
|
1 |
openssl pkcs12 -inkey domain.key -in domain.crt -export -out domain.pfx |
A parancs kérni fogja az exportálási jelszavak megadását, amelyeket opcionálisan üresen is hagyhat. Több tanúsítványt is láncolhat a PKCS12 fájlhoz a tanúsítványok egyetlen PEM fájlban (domain.crt) történő összefűzésével. A PKCS12 PFX néven is ismert, és leggyakrabban a Microsoft IIS.
- PKCS12 konvertálása PEM formátumba
Egy PKCS12 fájl (domain.pfx) PEM kódolású formátumba (domain.combined.crt) való konvertálásához írja be a következő parancsot:
|
1 |
openssl pkcs12 -in domain.pfx -nodes -out domain.combined.crt |
A fenti parancs által létrehozott PEM fájl tartalmazza az összes elemet, amelyet a PKCS12 tartalmazott.
7. szakasz: Az OpenSSL verziójának ellenőrzése
A futtatott szoftverek verziója befolyásolhatja az alkalmazások képességeit. Ezért szükséges a verzió megállapítása. Ugyanez vonatkozik az OpenSSL-re is. Előfordulhat, hogy egyes parancssori opciók hiányoznak az egyik verzióból, míg egy másikban elérhetők. A futtatott OpenSSL verziójának megtekintéséhez írja be a következő parancsot:
|
1 |
openssl version -a |
Az alábbiakban látható az a kimenet, amelyet a fenti parancs futtatásakor kaptunk az útmutató készítése során:
|
1 2 3 4 5 6 7 8 |
OpenSSL 1.1.1i 8 dec 2020 készült ekkor: Szo dec 19 15:39:47 2020 UTC platform: linux-x86_64 opciók: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) fordító: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG OPENSSLDIR: "/usr/local/ssl" ENGINESDIR: "/usr/local/lib/engines-1.1" Seeding forrás: os-specifikus |
Alább látható a tényleges képernyőkép:

Összegzés
Ebben az útmutatóban elmagyaráztuk, mi az az OpenSSL, kitértünk a tanúsítvány-aláírási kérelmekre (CSR), valamint bemutattunk néhány alapvető OpenSSL-parancsot, amelyeket a szerverkörnyezetében használhat.
Hiányol valamilyen fontos parancsot, vagy problémája adódott a parancsok bármelyikével a szerverbeállítás során a CloudSigma platformon? Forduljon bizalommal a 24/7-es ügyfélszolgálatunkhoz valós idejű chaten, hogy megbeszéljük.
Kellemes számítástechnikát!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.