Lehetővé teszi a titkosítást

Nginx Reverse Proxy HTTPS-sel a LetsEncrypt segítségével

Nginx Reverse Proxy HTTPS-sel a LetsEncrypt segítségével
Ez az én-m folytatása előző poszt ahol egy egyszerű fordított proxy szervert állítunk be az Nginx használatával. Ebben a bejegyzésben az ügyfél és a fordított proxy szerver közötti kapcsolatot az ingyenes TLS használatával fogjuk biztosítani (a.k.egy SSL) tanúsítvány a LetsEncrypt-től. Javaslom, hogy nézze meg a fent említett bejegyzést a fordított proxyról az alapokról.

Előfeltételek

  1. Statikus nyilvános IP-vel rendelkező szerver. Itt fut az Nginx.
  2. Háttérszerverek, a tervezett webhely HTTP-n fut
  3. Bejegyzett domain név. A ranvirslogot fogom használni.com, mint az elsődleges domain nevem, és a két webhely az FQDN-eken található - ww1.ranvirslog.com és ww2ranvirslog.com

Beállít

Tehát az IP-címek a legutóbbi alkalom óta megváltoztak, mivel újra elvégzem ezt a beállítást. Itt vannak az új IP-k és gazdagépnevek.

Virtuálisgép / hosztnév Nyilvános IP Privát IP Szerep / funkció
ReverseProxy 68.183.214.151 10.135.127.136 TLS végpont és fordított proxy szerver
web1 N / A 10.135.126.102 Hosting ww1.ranvirslog.com

webhely a 80-as porton keresztül HTTP

web2 N / A 10.135.126.187 Tárhely

ww2.ranvirslog.com

webhely a 80-as porton keresztül HTTP

A DNS rekordok önmagukban kerülnek beállításra, mind a webhelyek (különböző aldomainek) ugyanarra a statikus nyilvános IP-re mutatnak. Ez történetesen a Nginx fordított proxy IP-címe:

Rekord Érték
w1.ranvirslog.com 68.183.214.151
ww2.ranvirslog.com 68.183.214.151

Ahhoz, hogy a fordított DNS működjön titkosítatlan HTTP-n keresztül, két fájlt hoztunk létre az / etc / conf fájlban.d / nevű ww1.conf és ww2.konfigurálja mindegyiket a következő konfigurációval:

/ etc / conf.d / ww1.konf

szerver
hallgat 80;
hallgat [::]: 80;
szerver_neve ww1.ranvirslog.com;
hely /
proxy_pass http: // 10.135.126.102 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

/ etc / conf.d / ww2.konf

szerver
hallgat 80;
hallgat [::]: 80;
szerver_neve ww2.ranvirslog.com;
hely /
proxy_pass http: // 10.135.126.187 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Az általunk használt operációs rendszer az Ubuntu 18.04 LTS és megvan eltávolítva az / etc / nginx / sites-enabled / default fájl, így az Nginx pusztán fordított DNS-ként működhet a fenti konfigurációk segítségével.

Célkitűzés

Mivel a fordított DNS (és a háttér-webhelyek) már működnek és működnek, célunk egyetlen TLS tanúsítvány telepítése mindkét FQDN-hez (ez a ww1.ranvirslog.com és ww2.ranvirslog.com) a Nginx fordított proxy-nkon.

Az ügyfél és a fordított proxy közötti forgalom titkosításra kerül, de a fordított proxy és a háttérszerverek közötti forgalom nincs titkosítva. Ez azonban még mindig végtelenül biztonságosabb lehetőség, mint hogy egyáltalán nincs HTTPS. Azokban az esetekben, amikor a fordított proxy és a különféle webszerverek ugyanazon a gazdagépen vannak, mondjuk, ha Docker-tárolókat használ mindazon ugyanazon a VPS-en, akkor még ez a titkosítatlan forgalom is egyetlen gazdagépen található.

A Certbot telepítése

A Certbot egy kliens program, amely a fordított proxy szerverünkön fog futni, és egy TLS tanúsítványról tárgyal a LetsEncrypt céggel. A LetsEncrypt számára bebizonyítja, hogy a szerver valóban rendelkezik az FQDN-ek irányításával, amelyek állítása szerint rendelkezik irányítással. Nem fogunk aggódni, hogy Certbot hogyan csinálja.

Hagyományosan használhatja a Certbot önálló szoftverként, amely csak megszerzi a tanúsítványokat (amelyek alapvetően csak hosszú kriptográfiai kulcsok), és elmentik a szerverre. De szerencsére a legtöbb operációs rendszerhez vannak egyedi bővítmények az Nginx, az Apache és más szoftverek számára. Telepítjük a Certbot with Nginx bővítményt. Ez automatikusan konfigurálja az Nginx-et az újonnan megszerzett kulcsok használatára, és megszabadul az olyan bizonytalan szabályoktól, mint a HTTP meghallgatása a 80-as porton.

Ha Debian alapú rendszereket használ, például az én esetemben az Ubuntu 18-at használom.04 LTS, akkor a telepítés szellő.

$ sudo apt frissítés
$ sudo apt install software-properties-common
$ sudo add-apt-repository univerzum
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt frissítés
$ sudo apt telepítse a python-certbot-nginx fájlt

Más operációs rendszerek, a RedHat, a Gentoo, a Fedora, követhetik az itt felsorolt ​​hivatalos utasításokat.

A Certbot telepítése után a Nginx pluginnal az operációs rendszer kombinációjához belekezdhetünk.

TLS-tanúsítványok beszerzése

A TLS-tanúsítvány első megszerzéséhez futtassa a következő parancsot:

$ sudo certbot --nginx

Ez interaktív kérdések sorozatán fog végigmenni, az alábbiak szerint:

  1. Írd be az email címed

Hibakeresési napló mentése ide: / var / log / letsencrypt / letsencrypt.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) (a törléshez írja be a „c” szót): [e-mail védett]

  1. Egyetért a TOS-szal

Kérjük, olvassa el az Általános Szerződési Feltételeket a https: // letsencrypt oldalon.org / dokumentumok / LE-SA-v1.2017. november 2.-15.pdf. El kell fogadnia, hogy regisztráljon az ACME szerveren a https: // acme-v02 címen.api.titkosít.org / könyvtár
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Gree / (C) ancel: A

  1. Opcionális hírlevél

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Hajlandó lenne megosztani e-mail címét az Elektronikus Határ Alapítvánnyal, a Let Encrypt projekt alapító partnerével és a Certbot fejlesztő nonprofit szervezettel? E-mailt szeretnénk küldeni az internet titkosításával kapcsolatos munkánkról, az EFF híreiről, kampányairól és a digitális szabadság támogatásának módjairól.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y) es / (N) o: Y

  1. Ezután észleli a szerveren található domainneveket, és ha ki szeretné választani az összes domaint, egyszerűen nyomja meg a gombot

Melyik névhez szeretné aktiválni a HTTPS-t?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: w1.ranvirslog.com
2: ww2.ranvirslog.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Válassza ki a megfelelő számokat vesszővel és / vagy szóközökkel elválasztva, vagy hagyja üresen a bevitelt az összes megjelenített lehetőség kiválasztásához (a törléshez írja be a „c” billentyűt):

  1. Átirányít mindent a TLS-re. A 2. lehetőséget választottam, hogy mindent átirányítsak az SSL-re, de a felhasználási esete eltérhet. Új backend telepítéseknél biztonságos a 2. opció kiválasztása.

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 az új webhelyeknél, vagy ha biztos benne, hogy webhelye HTTPS-en működik. A webkiszolgáló konfigurációjának szerkesztésével visszavonhatja ezt a módosítást.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Válassza ki a megfelelő számot [1-2], majd [írja be] (nyomja meg a 'c' gombot a törléshez): 2

Ha minden jól sikerült, akkor ezt az üzenetet fogja látni, csak a domainneveire.

Gratulálunk! Sikeresen engedélyezte a https: // ww1 alkalmazást.ranvirslog.com és https: // ww2.ranvirslog.com Meglátogathatja az FQDN-eket, és észreveheti, hogy a webhelyeken most a lakat jel található, ami arra utal, hogy minden titkosítva van.

Nézze meg a konfigurációs fájlokat

Ha megtekinti a korábban létrehozott konfigurációs fájlokat, nevezetesen az / etc / conf fájlt.d / ww1.conf és / etc / conf.d / ww2.conf, észreveszi, hogy az összes „Figyelj 80” szabály eltűnt, és néhány új sor hozzá lett adva a szervernek, hogy a kommunikációt titkosítani kell, valamint a tanúsítványok és kulcsok helyét az említett titkosítás végrehajtásához.

Erősen ajánlom, hogy nézze át a konfigurációs fájlokat, mivel ez megtaníthatja a tanúsítványok megfelelő telepítésére és a konfigurációs fájlok írására is.

Tanúsítvány megújítása

A tipikus LetsEncrypt tanúsítványok 90 napig érvényesek, és lejáratuk előtt meg kell újítani őket. A Certbot segítségével először megújíthatja a megújítást a következő parancs futtatásával:

$ sudo certbot megújítás - száraz-futtatás

Ha a művelet sikeres, a következő üzenet jelenik meg:

Gratulálunk, minden megújulás sikerült. A következő bizonyítványokat megújították:

/ etc / letsencrypt / live / ww1.ranvirslog.com / fullchain.pem (siker)
** DRY RUN: a certbot megújításának szimulálása a cert lejáratához közel
** (A fenti tesztigazolásokat nem mentettük.)

Most hozzáadhat egy Cron feladatot, amely körülbelül hetente megpróbálja megújítani. A Certbot csak akkor fogja megújítani a tanúsítványokat, ha valóban ezért esedékesek, ezért nem kell aggódnia. A tényleges megújítás parancsa:

$ certbot megújítás

Adja hozzá a root cron jobjához a következők használatával:

$ sudo crontab -e

A következő parancssorban válassza ki kedvenc szerkesztőjét (ha nem biztos benne, válassza a Nano-t), és adja hozzá a következő sorokat a most megnyitott fájl végéhez:


# Például futtathatja az összes felhasználói fiók biztonsági másolatát
# 5-kor.m minden héten:
# 0 5 * * 1 tar -zcf / var / backups / home.tgz / home /
#
# További információkért lásd a crontab (5) és a cron (8) kézikönyv oldalait
#
# m h dom mon dow parancs
* 2 * * 2 certbot megújítás

Ez hajnali 2-kor futtatja a certbot megújítási parancsot bármely véletlen percben, minden hét második napján.

Következtetés

Ha Ön még nem ismeri a TLS-tanúsítványokat, akkor a HSTS-hez hasonló kísérletezés kockázatos lehet. Mivel ezek a változások visszafordíthatatlanok. Ha azonban le akarsz menni a biztonság nyúllyukán, akkor nagyon tudom ajánlani Troy Hunt blogját, amely az egyik fő inspiráció ennek az írásnak a hátterében.

Ezekkel az ingyenes eszközökkel adja hozzá az egérmozdulatokat a Windows 10 rendszerhez
Az elmúlt években a számítógépek és az operációs rendszerek nagymértékben fejlődtek. Volt idő, amikor a felhasználóknak parancsokkal kellett navigálni...
Az egér mozgásának vezérlése és kezelése több monitor között a Windows 10 rendszerben
Dual Display Mouse Manager lehetővé teszi az egér mozgásának vezérlését és konfigurálását több monitor között, lassítva annak mozgását a határ közeléb...
A WinMouse segítségével testre szabhatja és javíthatja az egérmutató mozgását a Windows PC-n
Ha szeretné javítani az egérmutató alapértelmezett funkcióit, használjon ingyenes programokat WinMouse. További funkciókat kínál, amelyek segítenek ab...