Predpoklady
- Server so statickou verejnou IP. Tu beží Nginx.
- Backendové servery so zamýšľaným webom bežiacim cez HTTP
- 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
serverpočú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
serverpočú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 --nginxToto prebehne sériou interaktívnych otázok, ako je uvedené nižšie:
- 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]
- 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
- 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
- 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“):
- 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-runAk 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 -eV 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.