HTML

Linux Akadémia

Friss topikok

SSL kulcs és tanúsítvány készítés

2013.03.17. 20:41 Czakó Krisztián

Majdnem minden szerver funkcióhoz kell ma már SSL kulcs és tanúsítvány. Persze lehet élni nélküle, de ha valamit is adsz a biztonságra, akkor jobb vele. Legyen szó webről (https) vagy levelezésről (IMAPS vagy IMAP+STARTTLS, de ugyan ez igaz POP3 és SMTP esetén is), a biztonságos kommunikáció alapja a megfelelő "SSL" kulcs és tanúsítvány. Persze az SSL csak egy vivőréteg és a kulcs az többnyire RSA, a tanúsítvány pedig X.509, de a köznyelv (és ebben az esetben a rendszergazdai köznyelv is), egyszerűen SSL-nek nevezi, így most én is ilyen hanyagul hivatkozok csak rá.

Az SSL nyújtotta biztonsághoz három úton juthatsz el, és ezek más-más biztonsági szintet és kényelmet fognak jelenteni. A leggyakoribb, egyben legegyszerűbb és mint nyilván kitaláltad a legkevesebb biztonságot nyújtó variáns a saját magával aláírt tanúsítvány. Ez a biztonság helyett sokkal inkább a hamis biztonságérzet keltését szolgálja, bár bizonyos környezetben és kellő odafigyeléssel jelent valamennyi biztonságot.

A következő szint, ha saját tanúsító szervezettel rendelkezel házon belül (cégen belül). Ez kiváló megoldás olyan esetekre, ha az SSL-t használó szerverekhez kizárólag céges gépekről kapcsolódnak, melyekre fel tudod telepíteni a saját CA tanúsítványodat. Ilyenkor a biztonság már értékelhető szintű, mindössze a CA kulcsára kell nagyon vigyáznod.

A harmadik szint, ha egy független, megbízható hitelesítő szervezetet kérsz fel arra, hogy a szervered számára készítsen általa hitelesített tanúsítványt. Ennek a szerepe az, hogy ő lesz a közvetítő közted és az általad nem ismert, nem elérhető látogatók, felhasználók között. A legismertebb példája a https-t használó weboldalakat tanúsító cégek és a böngészőkbe beépített CA tanúsítványok (ezen cégek tanúsító tanúsítványai).

Nyilván létezik még más szint is, de ez a három a leggyakoribb. Most az elsővel és az utolsóval szeretnék egy kicsit foglalkozni. A saját CA-t kihagyom, mert az hosszabb magyarázatot igényel, mint ami most ebbe az írásomba belefér. A példa kedvéért készítsünk egy webszerver tanúsítványt!

Linux alatt ha SSL tanúsítványt készítesz, a legjobban a GNUTLS eszközeivel jársz. Debian és Ubuntu esetén a szükséges szoftverek telepítése nagyon egyszerű:

sudo apt-get install gnutls-bin

Ha a szoftverek megvannak, jöhet a kulcs elkészítése. Ez lesz az a fájl, amit soha, semmilyen körülmények között nem szabad másnak odaadni:

certtool --bits 2048 -p --outfile https.key

Ha a kulcs kész, a folytatás attól függ, hogy saját magával aláírt tanúsítványt készítesz, vagy csak egy kérelmet, amit eljuttatsz a megfelelő tanúsító szervezetnek. Lássuk először az utóbbit!

certtol -q --load-privkey https.key --outfile https.csr

Itt már jön pár kérdés is a programtól, mely a kérelembe kerülő információkról érdeklődik:

Generating a PKCS #10 certificate request...
Country name (2 chars): HU
Organization name: Linux Akadémia Kft.
Organizational unit name:
Locality name: Budapest
State or province name: Budapest
Common name: www.linuxakademia.hu
UID:
Enter a dnsName of the subject of the certificate: www.linuxakademia.hu
Enter a dnsName of the subject of the certificate: linuxakademia.hu
Enter a dnsName of the subject of the certificate:
Enter the IP address of the subject of the certificate: 212.52.163.57
Enter the e-mail of the subject of the certificate:
Enter a challenge password:
Does the certificate belong to an authority? (y/N): n
Will the certificate be used for signing (DHE and RSA-EXPORT ciphersuites)? (y/N): n
Will the certificate be used for encryption (RSA ciphersuites)? (y/N): n
Is this a TLS web client certificate? (y/N): n
Is this also a TLS web server certificate? (y/N): y

A kitöltés során figyelj, hogy az adatokat helyesen add meg! Ezt a tanúsító szervezet ellenőrizni fogja és ha nem stimmel, új kérelmet kell beadnod. Az ország kétbetűs kódja és a szervezeted neve egyértelmű. A "locality", azaz helység név a szervezet székhelye szerinti helység (város) kell legyen. A "state or province" pedig Magyarországon a megye (vagy megyei jogú városnál ismét a város neve). A "common name" a szervered elsődleges neve. Ez biztos benne lesz a tanúsítványban és ha ez nem egyezik azzal, amit a felhasználó a böngészőbe beír, kapni fogja a kellemetlen hibaüzenetet. A "dnsName" mezőket kitöltheted, tanúsító szervezete válogatja, hogy ki engedi és ki nem ezen mező használatát. Itt adhatsz meg további neveket, amin "illetik" a szervered. Ha nincs több, üss egy entert magában. AZ "IP" cím hasonló opcionális célt szolgál. Ezt követően kizárólag a "TLS web server certificate" kérdésre válaszolj igennel!

Az egy elkészült https.csr fájlt (és csak azt!) juttasd el a tanúsító szervezetnek az általa kért módon. Tőle (ha minden rendben van), egy crt fájlt kapsz vissza, amit már használhatsz a webszervereden (a key fájllal együtt).

Ha magadnak írod alá, a folyamat egyszerűbb:

certtool -s --load-privkey https.key --outfile https.crt

A kérdések és a kitöltés módja hasonló az előző lépéshez. Ami itt extra, hogy meg kell adnod az érvényesség idejét. Az előző esetben ezt a kiállító adta meg és többnyire egy év. Általában javaslom, hogy magadnak is legalább évente újítsd meg a kulcsot is és a tanúsítványt is. Ez (is) javítja a biztonságot.

Ha már van egy tanúsítványod, annak adatait könnyen meg tudod nézni. Különösen a lejárati dátumra figyelj oda!

certtool -i --infile https.crt

Szólj hozzá!

Címkék: ssl https certificate tls

A bejegyzés trackback címe:

https://linuxakademia.blog.hu/api/trackback/id/tr935140075

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.