Umožňuje šifrování

Nginx Reverse Proxy s HTTPS přes LetsEncrypt

Nginx Reverse Proxy s HTTPS přes LetsEncrypt
Toto je pokračování mého předchozí příspěvek kde nastavujeme jednoduchý reverzní proxy server pomocí Nginx. V tomto příspěvku zajistíme spojení mezi klientem a reverzním proxy serverem pomocí bezplatného TLS (a.k.SSL) certifikát od LetsEncrypt. Doporučuji vám, abyste si základní informace prohlédli výše zmíněný příspěvek na reverzním proxy serveru.

Předpoklady

  1. Server se statickou veřejnou IP. To je místo, kde běží Nginx.
  2. Backendové servery se zamýšleným webem běžícím přes HTTP
  3. Registrovaný název domény. Budu používat ranvirslog.com jako můj primární název domény a tyto dva weby jsou na FQDN - ww1.ranvirslog.com a ww2ranvirslog.com

Založit

Takže adresy IP se od posledního času změnily, protože toto nastavení provádím znovu. Zde jsou nové adresy IP a názvy hostitelů.

VM / Hostname Veřejná IP Soukromá IP Role / funkce
ReverseProxy 68.183.214.151 10.135.127.136 Koncový bod TLS a reverzní proxy server
web1 N / A 10.135.126.102 Hostování WW1.ranvirslog.com

web přes port 80 HTTP

web2 N / A 10.135.126.187 Hostování

2. svět.ranvirslog.com

web přes port 80 HTTP

Záznamy DNS jsou nastaveny tak, že oba weby (různé subdomény) směřují na stejnou statickou veřejnou IP. Toto je IP adresa našeho reverzního proxy serveru Nginx:

Záznam Hodnota
druhá světová válka.ranvirslog.com 68.183.214.151
2. svět.ranvirslog.com 68.183.214.151

Aby náš reverzní DNS fungoval přes nešifrovaný HTTP, vytvořili jsme dva soubory v / etc / conf.d / pojmenovaný 2. sv.conf a druhá světová válka.conf každý s následující konfigurací:

/ etc / conf.d / ww1.konf

server
poslouchat 80;
poslouchat [::]: 80;
název_serveru ww1.ranvirslog.com;
místo /
proxy_pass http: // 10.135.126.102 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

/ etc / conf.d / ww2.konf

server
poslouchat 80;
poslouchat [::]: 80;
název_serveru 2.sv.ranvirslog.com;
místo /
proxy_pass http: // 10.135.126.187 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Operační systém, který používáme, je Ubuntu 18.04 LTS a máme odstraněn soubor / etc / nginx / sites-enabled / default, takže Nginx může fungovat čistě jako reverzní DNS pomocí výše uvedených konfigurací.

Objektivní

Vzhledem k tomu, že reverzní DNS (a back-endové webové stránky) jsou již spuštěné, je naším cílem nainstalovat jeden certifikát TLS pro oba plně kvalifikované názvy domény (to je druhá světová válka).ranvirslog.com a 2. světové války.ranvirslog.com) na našem reverzním proxy serveru Nginx.

Provoz mezi jakýmkoli klientem a reverzním proxy bude šifrován, ale přenos mezi reverzním proxy a back-endovými servery není šifrován. Toto je však stále nekonečně bezpečnější možnost, než vůbec nemít HTTPS. V případech, kdy reverzní proxy server a různé webové servery jsou na stejném hostiteli, řekněme, že pokud používáte kontejnery Dockeru k hostování všech na stejném VPS, pak je i tento nešifrovaný provoz obsažen na jednom hostiteli.

Instalace Certbotu

Certbot je klientský program, který poběží na našem reverzním proxy serveru a vyjedná certifikát TLS s LetsEncrypt. Ukáže LetsEncrypt, že server ve skutečnosti má kontrolu nad plně kvalifikovanými názvy domény, o kterých tvrdí, že má kontrolu nad. Nebudeme si dělat starosti s tím, jak to Certbot dělá.

Tradičně můžete Certbot použít jako samostatný software, který pouze získá certifikáty (což jsou v podstatě jen dlouhé kryptografické klíče) a uloží je na server. Ale naštěstí pro většinu operačních systémů existují vlastní doplňky pro Nginx, Apache a další software. Nainstalujeme Certbot s pluginem Nginx. Tím se automaticky nakonfiguruje Nginx tak, aby používal nově získané klíče a zbavil se nezabezpečených pravidel, jako je naslouchání protokolu HTTP na portu 80.

Pokud používáte systémy založené na Debianu, jako v mém případě používám Ubuntu 18.04 LTS, pak je instalace hračkou.

$ sudo apt aktualizace
$ sudo apt nainstalovat software-properties-common
$ sudo add-apt-repository vesmír
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt aktualizace
$ sudo apt nainstalovat python-certbot-nginx

Ostatní operační systémy, vaše RedHat, Gentoo, Fedora, mohou postupovat podle oficiálních pokynů uvedených zde.

Jakmile nainstalujete Certbot s Nginx Plugin pro vaši kombinaci OS se můžeme pustit do práce.

Získání certifikátů TLS

Chcete-li získat certifikát TLS poprvé, spusťte následující příkaz:

$ sudo certbot --nginx

Bude probíhat řada interaktivních otázek, jak je uvedeno níže:

  1. Vložte svůj e-mail

Ukládání protokolu ladění do / var / log / letsencrypt / letsencrypt.log
Vybrané doplňky: Authenticator nginx, Installer nginx
Zadejte e-mailovou adresu (používá se pro naléhavé obnovení a bezpečnostní upozornění) (pro zrušení zadejte „c“): [chráněno e-mailem]

  1. Souhlasím s TOS

Přečtěte si podmínky služby na https: // letsencrypt.org / documents / LE-SA-v1.2. listopadu - 15-2017.pdf. Chcete-li se zaregistrovat na serveru ACME na adrese https: // acme-v02, musíte souhlasit.api.letsencrypt.org / adresář
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) gree / (C) ancel: A

  1. Volitelný informační bulletin

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Byli byste ochotni sdílet svou e-mailovou adresu s nadací Electronic Frontier Foundation, zakládajícím partnerem projektu Let's Encrypt a neziskovou organizací vyvíjející Certbot? Chtěli bychom vám posílat e-maily o naší práci šifrování webu, novinkách EFF, kampaních a způsobech podpory digitální svobody.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y) es / (N) o: Y

  1. Poté detekuje názvy domén na vašem serveru a pokud chcete vybrat všechny domény, jednoduše stiskněte

Pro které názvy chcete HTTPS aktivovat?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: druhá světová válka.ranvirslog.com
2: druhá světová válka.ranvirslog.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Vyberte příslušná čísla oddělená čárkami nebo mezerami, nebo ponechejte prázdné pole pro výběr všech zobrazených možností (pro zrušení stiskněte „c“):

  1. Přesměrujte vše na TLS. Vybral jsem možnost 2, abych přesměroval vše na SSL, ale váš případ použití se může lišit. Pro nové instalace back-endu je bezpečné vybrat možnost 2.

Vyberte, zda chcete přesměrovat provoz HTTP na HTTPS, čímž odstraníte přístup HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1: No redirect - Neprovádějte žádné další změny v konfiguraci webového serveru.
2: Redirect - Přesměrování všech požadavků na zabezpečený přístup HTTPS. Vyberte tuto možnost pro nové weby, nebo pokud jste si jisti, že váš web funguje na HTTPS. Tuto změnu můžete vrátit úpravou konfigurace webového serveru.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Vyberte příslušné číslo [1-2] a poté [Enter] (pro zrušení stiskněte „c“): 2

Pokud vše proběhlo dobře, zobrazí se vám tato zpráva, místo toho pouze pro názvy vašich domén.

Gratulujeme! Úspěšně jste povolili https: // ww1.ranvirslog.com a https: // ww2.ranvirslog.com Můžete navštívit plně kvalifikované názvy domény a všimněte si, že webové stránky nyní mají značku visacího zámku, která naznačuje, že je vše šifrováno.

Podívejte se na konfigurační soubory

Pokud si prohlížíte konfigurační soubory, které jsme vytvořili dříve, jmenovitě / etc / conf.d / ww1.conf a / etc / conf.d / ww2.conf, všimnete si, že všechna pravidla „Listen 80“ zmizela a bylo přidáno několik nových řádků, sdělte serveru, že komunikace musí být šifrována a umístění certifikátů a klíčů k provedení uvedeného šifrování.

Důrazně doporučuji prohlédnout konfigurační soubory, protože to vás také může naučit, jak správně instalovat certifikáty a zapisovat konfigurační soubory.

Obnovení certifikace

Typické certifikáty LetsEncrypt jsou platné 90 dní a před vypršením platnosti je musíte obnovit. Certbot můžete použít k prvnímu suchému spuštění obnovy spuštěním příkazu:

$ sudo certbot restore --dry-run

Pokud operace proběhne úspěšně, zobrazí se následující zpráva:

Gratulujeme, všechna obnovení byla úspěšná. Byly obnoveny následující certifikáty:

/ etc / letsencrypt / live / ww1.ranvirslog.com / fullchain.pem (úspěch)
** DRY RUN: simulace „obnovení certbotů“ blízko vypršení platnosti certifikátu
** (Testovací certifikáty výše nebyly uloženy.)

Nyní můžete přidat úlohu Cron, která se pokusí o obnovení přibližně každý týden. Certbot neobnoví certifikáty, pokud k tomu skutečně nemají, takže se nemusíte bát. Příkaz pro skutečné obnovení je:

$ certbot obnovit

Přidejte jej do kořenové úlohy cron pomocí:

$ sudo crontab -e

V následující výzvě vyberte svůj oblíbený editor (vyberte si Nano, pokud si nejste jisti) a přidejte následující řádky na konec nyní otevřeného souboru:


# Můžete například spustit zálohu všech svých uživatelských účtů
# v 5 a.m každý týden s:
# 0 5 * * 1 tar -zcf / var / backups / home.tgz / home /
#
# Více informací najdete na manuálových stránkách crontab (5) a cron (8)
#
# m h dom mon dow příkaz
* 2 * * 2 obnovení certbot

Tím bude spuštěn příkaz certbot obnovit ve 2 ráno v libovolnou náhodnou minutu, druhý den každého týdne.

Závěr

Pokud jste u certifikátů TLS nováčkem, může být experimentování s věcmi, jako je HSTS, riskantní. Protože tyto změny jsou nevratné. Pokud však chcete jít dolů do králičí nory bezpečnosti, mohu vřele doporučit blog Troye Hunta, který je jednou z hlavních inspirací tohoto psaní.

Hry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Vytvoření vlastní simulace dopravy může být zábavné, uvolňující a mimořádně lákavé. Proto se musíte ujistit, že vyzkoušíte co nejvíce her, abyste našl...
Hry Výukový program OpenTTD
Výukový program OpenTTD
OpenTTD je jednou z nejpopulárnějších her pro obchodní simulaci. V této hře musíte vytvořit skvělé dopravní podnikání. Začnete však na začátku kolem r...
Hry SuperTuxKart pro Linux
SuperTuxKart pro Linux
SuperTuxKart je skvělý titul navržený tak, aby vám ve vašem systému Linux přinesl zážitek Mario Kart zdarma. Je to docela náročné a zábavné hrát, je n...