Ez a szócikk arról szól, hogyan lehet a böngészők által elfogadott tanúsítványt szerezni magán vagy kisvállalati webszerver https protokolljához ingyen.

A https elméleti alapjait és veszélyeit részletesen leírja a Wikipédia szócikke. Itt a szócikk „Tanúsítványkérelem előállítása” című fejezetét részletezzük.

A tanúsítványkérelmet interneten keresztül a Let's Encrypt tanúsítóhelyhez nyújtjuk be, mely a Mozilla támogatásával alakult és működik. A tanúsítványt csak három hónapra kapjuk – ez az egyetlen hátránya az ingyenességnek. A tanúsítvány titkos kulcsát mi generáljuk, és nem áruljuk el a Let's Encrypt-nek sem.

A tanúsítóhely meg kell győződjék arról, hogy a kérelem benyújtója valóban tulajdonosa a kérelembeli webhelynek (hiszen éppen ezt tanúsítja). A Let's Encrypt ennek bizonyítására több módot ad; mi azt választjuk, hogy feltesszük a Let's Encrypt által előállított két weblapot a webszervernek arra a helyére, ahová a Let's Encrypt kéri.

A tanúsítványkérelem előállítása

szerkesztés

Az openssl parancsot használjuk, mely a legtöbb operációs rendszerben megtalálható. Miután gyakran kell tanúsítványkérelmet előállítani, érdemes egy kicsit automatizálni: egy konfigurációs fáljba összegyűjteni a nem változó adatokat. Példa konfigfájl:

[req]
default_bits = 2048             # a kulcs hossza (bit)
prompt = no                     # nem-interaktív mód
default_md = sha256
req_extensions = req_ext        # a CSR-kiterjesztések listájának fejezetcíme
distinguished_name = dn         # az URL elsődleges nevének fejezetcíme

[ dn ]
C=HU                            # országkód
L=Budapest                      # város
CN = www.gyimesilaszlo.hu       # elsődleges URL

[ req_ext ]
subjectAltName = @alt_names     # az alternatív nevek fejezetneve

[ alt_names ]
DNS.1 = gyimesilaszlo.hu        # 1. név
DNS.2 = www.gyimesilaszlo.hu    # 2. név

A fenti példafájlban a CN és a két DNS-értéket kell módosítani. A többneves kiterjesztés használata kötelező egy név esetén is. IP-címet nem lehet megadni, mert az aláíráskor hibát jelez a Let's Encrypt.

Ezután egyetlen utasítással tudunk kulcsot és tanúsítványkérelmet előállítani:

openssl req -new -sha256 -nodes -out gyimesilaszlo.csr -newkey rsa:2048 -keyout gyimesilaszlo.key -config konfigfájl

A kérelem a gyimesilaszlo.csr, a titkos kulcs a gyimesilaszlo.key nevű fáljban keletkezett.

A kérelem benyújtása

szerkesztés

A https://www.sslforfree.com/ lapon a https:// feliratú mezőbe beírjuk a weblap elsődleges címét: www.gyimesilaszlo.hu. Kattintunk a Create Free SSL Certificate gombon. A három megjelenő nyomógomb közül a középsőt választjuk: Manual Verification. A lap alján megjelenik a Manually Verify Domain gomb. Rákattintunk. A lap alján újabb információ jelenik meg.

Az 1. pontban két letölthető fájlt látunk. Ezt kell a weblapunkra feltölteni a https document root alatti .well-known/acme-challenge/ alkönyvtárba. Az 5. pontban ellenőrizhetjük, hogy sikerült-e a feltöltés.

Ezután a lap alján bejelöljük a I have my own CSR checkboxot. Megjelenik egy kitöltendő mező: copy&paste-tel bemásoljuk a tanúsítványkérelmet, majd a fölötte levő Download SSL Certificate gombra kattintunk.

A tanúsítvány letöltése

szerkesztés

Némi gondolodás után új weblap jelenik meg Certificate Successfully Generated címmel. A Download All SSL Čertificate Files gombbal letöltjük a generált tanúsítványt. A letöltött fájl neve sslforfree.zip, és három fájlt tartalmaz:

  • ca_bundle.crt: a tanúsítóhely (Let's Encrypt) tanúsítványa
  • certificate.crt: a generált tanúsítvány
  • private.key: információ, hogy nem a Let's Encrypt állította elő a titkos kulcsot, hanem mi. Vagyis ő nem tudja.

A tanúsítvány feltöltése a webszerverre

szerkesztés

A fenti fájlokat fel kell tölteni a és megadni a webszerver apache konfigjában (debianban a /etc/apache2/sites-enabled könyvtárban, az ssl konfigurációs fáljban):

        SSLEngine on
        SSLCertificateFile /etc/ssl/private/20180716/certificate.crt
        SSLCertificateKeyFile /etc/ssl/private/20180716/gyimesilaszlo.key
        SSLCertificateChainFile /etc/ssl/private/20180716/ca_bundle.crt

A középső fájl a titkos kulcs. Mi generáltuk a tanúsítványkérelemmel együtt.

A változtatások után: systemctl restart apache2.

Ellenőrzés: böngészőben https://www.gyimesilaszlo.hu, az URL-sorban a lakat ikonra kattintva. Secure Connection > → More Information → View Certificate.