Cacert SSL kulcs gyártása https oldalhoz

Vannak oldalak amiknek a forgalmát érdemes https-el védeni, azonban anniyra mégse fontosak, hogy hivatalos tanúsítványt vegyünk rájuk. Ilyenkor jön jól pl. a CACert.org, ami egy közösségi tanúsítvány kibocsájtó. Most bemutatom, hogyan generálhatunk tanúsítványt (majd azt hitelesítettjük a cacert-el, esetleg saját magunkkal), HTTPS weboldal számára.

Privát kulcs generálása

Generáljuk le saját RSA privát kulcsunkat az openssl tool segítségével. A kulcs 2048 bit hosszú lesz:

openssl genrsa -des3 -out server.key 2048

elkezdődik a generálás, majd az Enter PEM pass phrase sornál (és a következőnél még egyszer) adjunk meg egy biztonságos jelszót (ezzel tudjuk majd megnyitni, kezelni a kulcsot a későbbiekben):

Generating RSA private key, 2048 bit long modulus
.........................................................++++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:

CSR (Certificate Signing Request) generálása

Ha megvan a privát kulcs, akkor generáljunk egy CSR kulcsot. Ez lesz az a kulcs, amit beküldünk (bemásolunk) a Cacdert.org oldalán és ez alapján kapjuk meg az aláírt kulcsot:

openssl req -new -key server.key -out server.csr

Különböző adatokat kell megadnunk. Ügyeljünk arra, hogy a Common Name részhez a https-en megtekinteni kívánt domain nevet írjuk (vagy adjuk meg csillagosan, ami minden aldomainre jó lesz: *.domain.tld).

Country Name (2 letter code) [GB]:HU
State or Province Name (full name) [Berkshire]:Megye
Locality Name (eg, city) [Newbury]:Település
Organization Name (eg, company) [My Company Ltd]:Cégnév
Organizational Unit Name (eg, section) []:Cégen belüli szervezet neve
Common Name (eg, your name or your server’s hostname) []:valami.domain.tld
Email Address []:info@domain.tld
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: Jelszó
An optional company name []: Jelszó mégegyszer

Kulcs aláírása a Cacert.org-nál

Menjünk el a cacert.org oldalra, majd először adjuk hozzá domainünket (a fő doamint, akkor is ha a tanusítvány aldomainre szól).Azt, hogy a miénk a domain emailben kiküldött linkre kattintva erősíthetjük meg. Domaint a bal oldalt lévő Domain opció alatti New (Új gombra kattintva adhatunk hozzá.

Cacert.org: Domain hozzáadása fiókunkhoz

Ha megvolt a domain megerősítése, akkor a bal oldai oldalsávban a Server Certificates opció alatt tudjuk az új tanúsítványunkat aláírni. A New (Új) opcióra kattintva látunk egy beviteli mezőt, ide másoljuk be a server.csr fájl tartalmát, majd a Submit gombra kattintás után megkapjuk az aláírt tanúsítványt.

Mentsük el a cacerttől kapott kulcsunkat egy server.crt nevű fájlba:

editor server.crt

Másoljuk be és mentsük a fájlt.

Ha saját magunknak akarjuk aláírni

Tesztelési célra jó lehet az is, ha saját magunk írjuk alá a saját tanúsítványunkat a következő paranccsal (365 napra):

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Jelszó (Passphrase) eltávolítása a kulcsról

Az apache számára gyártanunk kell a privát kulcsunkból egy jelszó nélküli verziót. Az apache működik a jelszavas kulccsal is, azonban ekkor minden indításkor meg kéne adnunk a kulcs jelszavát:

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

Apache beállítása

Hozzunk létre egy mappát, ahová bemásoljuk a kulcsokat, majd másoljuk is be:

mkdir /etc/apache2/cert
cp server.crt /etc/apache2/cert/valami.domain.tld.crt
cp server.key /etc/apache2/cert/valami.domain.tld.key

Állítsuk be a fájlok jogosultságát, hogy csak a root tudja olvasni:

chmod 400 /etc/apache2/cert/*

Majd nyissuk meg annak a vhostnak a konfigurációs fájlját, amit https-en szeretnénk elérni, és módosítsuk az alábbiak szerint (feltételezve, hogy az Apache mod_ssl telepítve és beállítva van, valamint be van állítva, hogy a 443-as porton is figyeljen – Listen 443 opció)

A VirtualHost értékét írjuk át 443-ra (https prot). Majd másoljuk be a pontok utáni sorokat. A kulcsok elérési útját és fájlnevét írjuk át természetesen a saját rendszerünkben lévőre:

<VirtualHost *:443>
..............
<IfModule mod_ssl.c>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/cert/valami.domain.tld.crt
SSLCertificateKeyFile /etc/apache2/cert/valami.domain.tld.key
<IfModule mod_setenvif.c>
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
</IfModule>
</IfModule>
</VirtualHost>

Indítsuk újra az Apacheot, és nézzük meg https-en az oldalt!

Ha a böngészőnk panaszkodik, de felejtsük el telepíteni a cacert.org ROOT tanúsítványait: http://www.cacert.org/index.php?id=3

Újabb kulcsok gyártása

Mivel már van egy privát kulcsunk, abból tudunk újabb kulcsokat (további domainekhez pl.) gyártani. Így elég csak a CSR generálása résztől követnünk a leírást.

Végezetül

Jól mentsük el a privát kulcsunkat, mivel a későbbiekben annak segítségével tudunk új kulcsot igényelni.

6 hozzászólás


  1. És mit lehet tenni ha pl. a DynDns szolgáltatás által regisztrált domainnévhez szeretnék kulcsot hozzáadni?


  2. csaga: cacertnél erre nincs lehetőséged, mivel a dyndns.com zónát nem tudod felvenni.


  3. Sziasztok!

    “azonban anniyra mégse fontosak, hogy hivatalos tanúsítványt vegyünk rájuk”

    Véleményem szerint fontos egy ilyen tanúsítvány!
    Viszont a legtöbb weboldalon tényleges pénzforgalom nem zajlik, így nem látom értelmét annak, hogy plusz ezrekért vásárolj meg egy tanúsítványt. Annyira még nem mélyedtem bele a tanúsítványok világába így még ingyenest sem kerestem és a leírásod alapján kipróbálom ezt a lehetőséget.


  4. fapapucs: nem biztos, hogy fontos. pl. tesztkörnyezethez teljesen felesleges tanúsítványt vásárolni, vagy olyan környezetbe ahol érzékeny adatok mennek, de saját használatra (pl. egy saját SVN repo).


  5. Én úgy gondoltam, hogy ha csinálok egy ilyen tanúsítványt az otthoni szerveremre akkor úgy fog működni, hogy amíg nem rakom fel a Mozillára a kulcsomat addig nem tudok csatlakozni rá (mint a levelezésben a GnuPG) de szó sincs erről.


  6. csaga: tudsz csatlakozni hozzá, csak kapod a halom figyelmeztetést, hogy nem hiteles a tanúsítvány, stb.

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

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.