Előfeltételek
- Statikus nyilvános IP-vel rendelkező szerver. Itt fut az Nginx.
- Háttérszerverek, a tervezett webhely HTTP-n fut
- 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
szerverhallgat 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
szerverhallgat 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 --nginxEz interaktív kérdések sorozatán fog végigmenni, az alábbiak szerint:
- Í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]
- 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
- 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
- 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):
- Á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ásHa 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ásAdja hozzá a root cron jobjához a következők használatával:
$ sudo crontab -eA 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.