HTTP

A HTTP átirányítása HTTPS-re

A HTTP átirányítása HTTPS-re
Akár önaláírt, akár a jól ismert CA tanúsítványait használja, szüksége van arra, hogy integrálja azokat a szolgáltatásaival. Az egyik legjellemzőbb eset a HTTP-kiszolgáló esetében, ez lehet webszerver vagy REST API-kiszolgáló, de biztonságban kell konfigurálni.

A legtöbb webkiszolgáló, mint például az nginx és az apache, alapértelmezés szerint a 80-as porton hallgat, és elég sok konfigurációra van szükségük, mielőtt a tanúsítványokat a forgalom titkosításához kezdik. Annak ellenére, hogy konfigurálva van, a webszerver továbbra is problémamentesen képes kiszolgálni a HTTP forgalmat. Tehát a webhely látogatói csak a következőt írják be: http: // example.com a https: // példa helyett.com és a teljes forgalom titkosítatlan marad számukra. A probléma kikerüléséhez konfigurálnunk kell a HTTP szervereket úgy, hogy maguk is átirányítsák az összes HTTP-t HTTPS-re.

A telepítésem nyilvános IP-vel rendelkező FQDN-t használ, ezért SSL-tanúsítványt adok ki a LetsEncrypt-től, nem pedig saját aláírást. A használt webszerver típusától függően ezt többféleképpen is megteheti. De ennek általános folyamata a következő:

  1. Aláírt tanúsítvány beszerzése a CA-tól. Esetünkben ez a LetsEncrypt lesz
  2. Konfigurálja a webkiszolgálót a titkosító kulcs használatával a kimenő HTTP-forgalom titkosításához a 443-as porton. Ez az alapértelmezett HTTPS port.
  3. Átirányítja az összes bejövő kérést a 80-as porton (amely nem titkosított HTTP) a 443-as portra, ezáltal lehetővé téve a titkosított munkameneteket az összes bejövő kapcsolat számára.

Bemutassuk a kívánt módszer elérésének különféle módját. Az első a legegyszerűbb megoldás, amely a Certbot-ot használja.

1. Legegyszerűbb módszer - Certbot beépülő modulok használata az Nginx vagy az Apache számára

Az Nginx-et fogom használni példaként ehhez a szerverhez. Ha más verziót futtat, például Apache vagy HAProxy, akkor csak látogasson el a Certbot hivatalos oldalára, és válassza ki az operációs rendszert és a választott webszervert. Az Nginx számára az Ubuntu 18-on.04, ezekre a parancsokra van szüksége.

Először frissítse a repo indexét.

$ sudo apt-get update
$ sudo apt-get install software-properties-common

Hozzá kell adnia a szükséges harmadik féltől származó tárhelyeket, amelyeket az Ubuntu alapértelmezés szerint nem engedélyezett.

$ sudo add-apt-repository univerzum
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt-get update

Ezután telepítse a certbot csomagot az Nginx beépülő modulokkal, az alábbi paranccsal.

$ sudo apt-get install certbot python-certbot-nginx

Az utasítás különböző platformokon eltérő lesz, és telepítsen beépülő modulokat a webszerverhez, ha rendelkezésre állnak. A beépülő modulok azért könnyítik meg életünket, mert automatikusan szerkeszthetik a webszerver konfigurációs fájljait, hogy a forgalmat is átirányítsák. Hátránya lehet, hogy ha egy nagyon testreszabott kiszolgálót futtat egy már létező webhelyhez, akkor a plugin feltörhet néhány dolgot.

Új webhelyek vagy nagyon egyszerű konfigurációk, például egy fordított proxy esetében a plugin meglepően jól működik. A tanúsítványok megszerzéséhez és a forgalom átirányításához egyszerűen futtassa az alábbi parancsot, és kövesse a különféle interaktív lehetőségeket, miközben a csomag végigvezeti őket.

$ sudo certbot --nginx

Kimenet:

certbot - nginx
Hibakeresési napló mentése a / var / log / letsencrypt / letsencrypt könyvtárba.napló
Kiválasztott beépülő modulok: Authenticator nginx, Installer nginx
Írja be az e-mail címet (sürgős megújításhoz és biztonsági értesítésekhez használják) (Írja be a „c” t
törlés): TUDNIVALÓD @ PÉLDA.COM
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Kérjük, olvassa el az Általános Szerződési Feltételeket a címen
https: // letsencrypt.org / dokumentumok / LE-SA-v1.2017. november 2.-15.pdf. Neked muszáj
megállapodás az ACME szerveren történő regisztrációhoz a következő címen:
https: // acme-v02.api.titkosít.org / könyvtár
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Gree / (C) ancel: A
 

A konfigurációs fájlokban nem található név. Kérjük, adja meg domainjét
név (ek) (vesszővel és / vagy szóközzel elválasztva) (A törléshez írja be a „c” betűt): SUBDOMAIN.DOMAIN NÉV.TLD

 
Kérjük, válassza ki, hogy a HTTP-forgalmat átirányítja-e a HTTPS-re, eltávolítva a HTTP-hozzáférést.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Nincs átirányítás - Ne végezzen további módosításokat a webszerver konfigurációján.
2: Átirányítás - Az összes kérelem átirányítása a HTTPS-hozzáférés biztonságához. Válassza ezt a
új webhelyeket, vagy ha biztos benne, hogy webhelye HTTPS-en működik. Ezt visszavonhatja
változtassa meg a webkiszolgáló konfigurációjának szerkesztésével.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Válassza ki a megfelelő számot [1-2], majd [írja be] (nyomja meg a 'c' gombot a törléshez): 2
A 80-as port teljes forgalmának átirányítása az ssl-re az / etc / nginx / sites-enabled / default fájlban
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Gratulálunk! Sikeresen engedélyezte a https: // SUBDOMAIN fájlt.DOMAIN NÉV.TLD
 
Tesztelje a konfigurációt:
https: // www.ssllabs.com / ssltest / analysis.html?d = ALTERÜLET.DOMAIN NÉV.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

FONTOS JEGYZETEK:
- Gratulálunk! Tanúsítványát és láncát elmentette a következő helyre:

/ etc / letsencrypt / live / SUBDOMAIN.DOMAIN NÉV.TLD / fullchain.pem

Kulcsfájlját a következő helyre mentette:

/ etc / letsencrypt / live / SUBDOMAIN.DOMAIN NÉV.TLD / privkey.pem

Amint a fenti példában látható, a tanúsítvány megszerzéséhez csak érvényes e-mail címet és domain nevet kell megadnia. Ez a tanúsítvány a következő helyen szerepel: / etc / letsencrypt / live / SUBDOMAIN.DOMAIN NÉV.TLD. Az utolsó könyvtárat az FQDN-ről kapják.

A legfontosabb szempont az Átirányítás opció kiválasztása, és elvégzi az összes HTTP-forgalom HTTPS-re történő átirányítását. Ha kíváncsi vagy ezekre a változásokra, akkor megnézheted a konfigurációs fájlokat / etc / nginx / hogy megkapja a lényegét.

2. A Config fájlok szerkesztése

Ha kézzel szeretné konfigurálni a szervert a tanúsítványok használatára. A tanúsítványok certbot használatával történő futtatásához futtassa:

$ sudo certbot certonly

Mint korábban, a tanúsítványokat a könyvtárba menti / etc / letsencrypt / live / yourdomainname.com /

Most konfigurálhatjuk az Nginx-et az ebben a könyvtárban található fájlok használatára. Először is, megszabadulok a Debian speciális könyvtárkiosztásától. Az alapértelmezett oldal webhely-konfigurációs fájlja / etc / nginx / sites-available / default alkönyvtár szimbólum linkkel / etc / nginx / site-enabled.

Csak törlöm a symlinket és áthelyezem a config fájlt az / etc / nginx / conf könyvtárba.d a-val .conf kiterjesztés csak azért, hogy a dolgok általánosabbak legyenek és alkalmazhatók más disztrókra is.

$ sudo rm / etc / sites-enabled / default
$ sudo mv / etc / nginx / sites-available / default / etc / nginx / conf.d / alapértelmezett.konf
$ sudo service nginx indítsa újra

Módosítom ezt az alapértelmezett konfigurációs fájlt annak bemutatására, hogy a TLS hogyan engedélyezett.

Az alábbiakban láthatja az alapértelmezett konfigurációs fájl tartalmát a megjegyzés nélküli szakaszok nélkül. A kiemelt szakaszokat kell felvennie a kiszolgáló konfigurációjába a TLS engedélyezéséhez, és a konfigurációs fájl utolsó blokkja észleli, hogy a séma TLS-t használ-e vagy sem. Ha a TLS-t nem használják, akkor egyszerűen visszaad egy 301-es átirányítási kódot az ügyfélnek, és megváltoztatja az URL-t a https használatára. Így nem fog lemaradni a felhasználókról

szerver
hallgat 80 default_server;
hallgat [::]: 80 default_server;
hallgatni 443 ssl;
ssl_certificate / etc / letsencrypt / live / SUBDOMAIN.TARTOMÁNY.TLS / fullchain.pem;
ssl_certificate_key / etc / letsencrypt / live / SUBDOMAIN.TARTOMÁNY.TLD / privkey.pem;
ssl_session_cache megosztva: le_nginx_SSL: 1m;
ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers be;
ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305: ECDHE-
ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256
-GCM-SHA384: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256
-GCM-SHA384: ECDHE-ECDSA-AES128-SHA256: ECDHE-RSA-AES128-SHA256: ECDHE-ECDSA-AES128
-SHA: ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES128-SHA: ECDHE-ECDSA-AES256-SHA384: ECDHE
-ECDSA-AES256-SHA: ECDHE-RSA-AES256-SHA: DHE-RSA-AES128-SHA256: DHE-RSA-AES128-SHA: DHE
-RSA-AES256-SHA256: DHE-RSA-AES256-SHA: ECDHE-ECDSA-DES-CBC3-SHA: ECDHE-RSA-DES-CBC3
-SHA: EDH-RSA-DES-CBC3-SHA: AES128-GCM-SHA256: AES256-GCM-SHA384: AES128-SHA256: AES256
-SHA256: AES128-SHA: AES256-SHA: DES-CBC3-SHA:!DSS ";
root / var / www / html;
index index.html index.htm index.nginx-debian.html;
szerver név _;
hely /
try_files $ uri $ uri / = 404;

ha ($ séma != "https")
return 301 https: // $ host $ request_uri;

 

Néhány további paraméter hozzáadva ehhez a konfigurációs fájlhoz. Beleértve az időkorlátot deklaráló paramétereket, a használni kívánt TLS-verziót és a kiszolgáló által használt titkosítási titkosításokat. Ezt a Certbot által ajánlott (de opcionális) Nginx konfigurációkból kölcsönözték.

Most ellenőrizze, hogy a konfigurációs fájl érvényes-e, és indítsa újra a szervert.

$ sudo nginx -t
nginx: az / etc / nginx / nginx konfigurációs fájl.konf szintaxis rendben van
nginx: konfigurációs fájl / etc / nginx / nginx.konf teszt sikeres
$ sudo service nginx indítsa újra

Következtetés

Ugyanezt a megközelítést alkalmazhatja olyan bonyolultabb webalkalmazások és szolgáltatások számára is, amelyekhez HTTPS szükséges. Hagyjuk, hogy egyszerre több tartománynévhez állítson ki tanúsítványokat, és meglehetősen egyszerűen több webhelyet is otthont adhat az nginx webszervere mögött. Ha követte a fenti példát, próbálja meg elérni webhelyét a http (http: // SUBDOMAIN.TARTOMÁNY.TLD), és automatikusan átirányít a HTTPS-re.

Más webszerverekhez, például az Apache-hoz, használja a megfelelő certbot beépülő modult, vagy olvassa el a hivatalos dokumentációt.

Ingyenes és nyílt forráskódú játékmotorok a Linux játékok fejlesztéséhez
Ez a cikk felsorolja azokat az ingyenes és nyílt forráskódú játékmotorokat, amelyek felhasználhatók 2D és 3D játékok fejlesztésére Linuxon. Számos ily...
Shadow of the Tomb Raider for Linux Tutorial
A Shadow of the Tomb Raider a Tomb Raider sorozat tizenkettedik kiegészítője - az Eidos Montreal által létrehozott akció-kaland játék franchise. A ját...
Az FPS növelése Linux alatt?
Az FPS jelentése Képkocka másodpercenként. Az FPS feladata a videolejátszások vagy játékteljesítmények képkockasebességének mérése. Egyszerű szavakkal...