Umožňuje šifrovanie

Nginx Reverse Proxy s HTTPS cez LetsEncrypt

Nginx Reverse Proxy s HTTPS cez LetsEncrypt
Toto je pokračovanie môjho predchádzajúci príspevok kde nastavujeme jednoduchý reverzný proxy server pomocou Nginx. V tomto príspevku zabezpečíme spojenie medzi klientom a reverzným proxy serverom pomocou bezplatného TLS (a.k.SSL) certifikát od LetsEncrypt. Odporúčam vám, aby ste si základné informácie prečítali vyššie v uvedenom príspevku na reverznom serveri proxy.

Predpoklady

  1. Server so statickou verejnou IP. Tu beží Nginx.
  2. Backendové servery so zamýšľaným webom bežiacim cez HTTP
  3. Registrovaný názov domény. Budem používať ranvirslog.com ako moje primárne doménové meno a tieto dva weby sú na FQDN - ww1.ranvirslog.com a ww2ranvirslog.com

Nastaviť

Takže adresy IP sa od poslednej doby zmenili, pretože toto nastavenie robím znova. Tu sú nové adresy IP a názvy hostiteľov.

VM / Hostname Verejná IP Súkromná IP Úloha / funkcia
ReverseProxy 68.183.214.151 10.135.127.136 Koncový bod TLS a reverzný proxy server
web1 N / A 10.135.126.102 Hostiteľská WW1.ranvirslog.com

web cez port 80 HTTP

web2 N / A 10.135.126.187 Hosting

druhá svetová vojna.ranvirslog.com

web cez port 80 HTTP

Záznamy DNS sú nastavené tak, že obidve webové stránky (rôzne subdomény) smerujú na rovnakú statickú verejnú IP. Toto je IP adresa nášho reverzného proxy servera Nginx:

Nahrávka Hodnota
druhá svetová vojna.ranvirslog.com 68.183.214.151
druhá svetová vojna.ranvirslog.com 68.183.214.151

Aby náš reverzný DNS fungoval cez nezašifrovaný HTTP, vytvorili sme dva súbory v / etc / conf.d / pomenované ww1.conf a ww2.conf s nasledujúcou konfiguráciou:

/ etc / conf.d / ww1.konf

server
počúvať 80;
počúvať [::]: 80;
nazov_serveru ww1.ranvirslog.com;
miesto /
proxy_pass http: // 10.135.126.102 /;
proxy_buffering vypnutý;
proxy_set_header X-Real-IP $ remote_addr;

/ etc / conf.d / ww2.konf

server
počúvať 80;
počúvať [::]: 80;
názov_servera 2.sv.ranvirslog.com;
miesto /
proxy_pass http: // 10.135.126.187 /;
proxy_buffering vypnutý;
proxy_set_header X-Real-IP $ remote_addr;

Operačný systém, ktorý používame, je Ubuntu 18.04 LTS a máme odstránený súbor / etc / nginx / sites-enabled / default, takže Nginx môže pôsobiť čisto ako reverzné DNS pomocou vyššie uvedených konfigurácií.

Cieľ

Keď je reverzný server DNS (a back-endové webové stránky) už funkčný, naším cieľom je nainštalovať jeden certifikát TLS pre obidva plne kvalifikované názvy domény (tj.ranvirslog.com a 2.sv.v.ranvirslog.com) na našom reverznom proxy serveri Nginx.

Prenos medzi akýmkoľvek klientom a reverzným proxy serverom bude šifrovaný, ale prenos medzi reverzným proxy serverom a servermi typu back-end nie je šifrovaný. Stále je to však nekonečne bezpečnejšia voľba, ako keď nemáte vôbec HTTPS. V prípadoch, keď je reverzný proxy server a rôzne webové servery na rovnakom hostiteľovi, povedzme, že ak používate kontajnery Docker na hosťovanie všetkých na rovnakom VPS, potom je aj táto nezašifrovaná prevádzka obsiahnutá na jednom hostiteľovi.

Inštaluje sa Certbot

Certbot je klientský program, ktorý bude bežať na našom reverznom proxy serveri a vyjedná certifikát TLS s LetsEncrypt. LetsEncryptu sa preukáže, že server v skutočnosti má kontrolu nad FQDN, o ktorých tvrdí, že nad nimi má kontrolu. Nebudeme sa báť, ako to Certbot robí.

Tradične môžete Certbot používať ako samostatný softvér, ktorý iba získa certifikáty (čo sú v podstate iba dlhé kryptografické kľúče) a uloží ich na server. Ale našťastie pre väčšinu operačných systémov existujú vlastné doplnky pre Nginx, Apache a ďalší softvér. Nainštalujeme Certbot s doplnkom Nginx. To automaticky nakonfiguruje Nginx tak, aby používal novo získané kľúče a zbavil sa nezabezpečených pravidiel, ako je napríklad počúvanie protokolu HTTP na porte 80.

Ak používate systémy založené na Debiane, tak ako v mojom prípade používam Ubuntu 18.04 LTS, potom je inštalácia hračka.

$ sudo apt aktualizácia
$ sudo apt nainštalovať software-properties-common
$ sudo add-apt-repository vesmír
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt aktualizácia
$ sudo apt nainštalovať python-certbot-nginx

Ostatné operačné systémy, váš RedHat, Gentoo, Fedora, môžu postupovať podľa oficiálnych pokynov uvedených tu.

Po nainštalovaní Certbotu s doplnkom Nginx pre vašu kombináciu OS sa môžeme pustiť do práce.

Získavanie certifikátov TLS

Ak chcete získať certifikát TLS prvýkrát, spustite nasledujúci príkaz:

$ sudo certbot --nginx

Toto prebehne sériou interaktívnych otázok, ako je uvedené nižšie:

  1. Zadajte svoj e-mail

Ukladá sa ladiaci denník do / var / log / letsencrypt / letsencrypt.log
Vybraté doplnky: Authenticator nginx, Installer nginx
Zadajte e-mailovú adresu (používa sa na urgentné obnovenie a bezpečnostné oznámenia) (na zrušenie zadajte „c“): [chránené e-mailom]

  1. Súhlasíte s TOS

Prečítajte si zmluvné podmienky na https: // letsencrypt.org / documents / LE-SA-v1.2. novembra - 15-2017.pdf. Musíte súhlasiť s registráciou na serveri ACME na https: // acme-v02.api.letsencrypt.org / adresár
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) gree / (C) ancel: A

  1. Voliteľný informačný bulletin

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Boli by ste ochotní zdieľať svoju e-mailovú adresu s nadáciou Electronic Frontier Foundation, zakladajúcim partnerom projektu Let's Encrypt a neziskovou organizáciou, ktorá vyvíja Certbot? Radi by sme vám poslali e-mail s informáciami o našej práci pri šifrovaní webu, správach o EFF, kampaniach a spôsoboch podpory digitálnej slobody.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y) es / (N) o: Y

  1. Potom zistí názvy domén na vašom serveri a ak chcete vybrať všetky domény, jednoducho stlačte

Pre ktoré mená by ste chceli aktivovať HTTPS?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: druhá svetová vojna.ranvirslog.com
2: druhá svetová vojna.ranvirslog.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Vyberte príslušné čísla oddelené čiarkami alebo medzerami, alebo nechajte vstup prázdny, aby ste vybrali všetky zobrazené možnosti (zrušením zadajte „c“):

  1. Všetko presmerujte na TLS. Vybral som možnosť 2, aby som všetko presmeroval na SSL, ale váš prípad použitia sa môže líšiť. Pre nové backendové inštalácie je bezpečné zvoliť možnosť 2.

Vyberte, či chcete presmerovať prenos HTTP na HTTPS, a tým odstrániť prístup HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1: No redirect - Žiadne ďalšie zmeny v konfigurácii webového servera.
2: Redirect - Presmerujte všetky požiadavky na zabezpečený prístup HTTPS. Vyberte túto možnosť pre nové weby alebo ak ste si istí, že váš web funguje na protokole HTTPS. Túto zmenu môžete vrátiť úpravou konfigurácie vášho webového servera.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Vyberte príslušné číslo [1-2], potom [zadajte] (pre zrušenie stlačte „c“): 2

Ak všetko prebehlo dobre, zobrazí sa táto správa iba pre vaše názvy domén.

Gratulujem! Úspešne ste povolili https: // ww1.ranvirslog.com a https: // ww2.ranvirslog.com Môžete navštíviť FQDN a všimnite si, že webové stránky majú teraz značku visiaceho zámku, ktorá naznačuje, že všetko je šifrované.

Prezrite si konfiguračné súbory

Ak si pozriete konfiguračné súbory, ktoré sme vytvorili skôr, konkrétne / etc / conf.d / ww1.conf a / etc / conf.d / ww2.conf, všimnete si, že všetky pravidlá „Listen 80“ zmizli a bolo pridaných niekoľko nových riadkov, ktoré serveru hovoria, že je potrebné šifrovať komunikáciu a umiestnenie certifikátov a kľúčov na vykonanie uvedeného šifrovania.

Dôrazne odporúčam prezrieť si konfiguračné súbory, pretože to vás tiež môže naučiť, ako správne inštalovať certifikáty a zapisovať konfiguračné súbory.

Obnovenie certifikácie

Typické certifikáty LetsEncrypt sú platné 90 dní a pred vypršaním platnosti si ich musíte predĺžiť. Môžete použiť Certbot na prvé suché spustenie obnovenia spustením príkazu:

$ sudo certbot restore --dry-run

Ak bude operácia úspešná, zobrazí sa nasledujúca správa:

Gratulujeme, všetky obnovy boli úspešné. Boli obnovené tieto certifikáty:

/ etc / letsencrypt / live / ww1.ranvirslog.com / fullchain.pem (úspech)
** DRY RUN: simulácia 'obnovenia certbotu' blízko vypršania platnosti certifikátu
** (Testovacie certifikáty uvedené vyššie neboli uložené.)

Teraz môžete pridať úlohu Cron, ktorá sa bude každý týždeň pokúšať o obnovenie. Certbot neobnoví certifikáty, pokiaľ na to nie sú skutočne oprávnení, takže sa nemusíte obávať. Príkaz na skutočné obnovenie je:

$ certbot obnoviť

Pridajte ho do úlohy cron root:

$ sudo crontab -e

V nasledujúcom riadku vyberte svoj obľúbený editor (pokiaľ si nie ste istí, vyberte Nano) a na koniec teraz otvoreného súboru pridajte nasledujúce riadky:


# Môžete napríklad spustiť zálohu všetkých svojich používateľských účtov
# o 5 a.m každý týždeň s:
# 0 5 * * 1 tar -zcf / var / backups / home.tgz / home /
#
# Viac informácií nájdete na manuálnych stránkach crontab (5) a cron (8)
#
# m h dom mon dow príkaz
* 2 * * 2 obnovenie certbot

Týmto spustíte príkaz obnovenia certbot o 2 ráno v ľubovoľnú náhodnú minútu, druhý deň každého týždňa.

Záver

Ak ste v oblasti certifikátov TLS nováčikom, experimentovanie s vecami ako HSTS môže byť riskantné. Pretože tieto zmeny sú nezvratné. Ak však chcete ísť králičou bezpečnostnou dierou, môžem vrelo odporučiť blog Troy Hunt, ktorý je jednou z hlavných inšpirácií za týmto napísaním.

Hry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Vytvorenie vlastnej simulácie dopravy môže byť zábavné, relaxačné a mimoriadne lákavé. Preto sa musíte uistiť, že vyskúšate čo najviac hier, aby ste n...
Hry Výukový program OpenTTD
Výukový program OpenTTD
OpenTTD je jednou z najpopulárnejších obchodných simulačných hier. V tejto hre musíte vytvoriť úžasné dopravné podnikanie. Začnete však na začiatku ok...
Hry SuperTuxKart pre Linux
SuperTuxKart pre Linux
SuperTuxKart je vynikajúci titul navrhnutý tak, aby vám priniesol zážitok z hry Mario Kart zadarmo na vašom systéme Linux. Je to dosť náročné a zábavn...