Ļauj šifrēt

Nginx Reverse Proxy ar HTTPS, izmantojot LetsEncrypt

Nginx Reverse Proxy ar HTTPS, izmantojot LetsEncrypt
Šis ir manas darbības turpinājums iepriekšējā ziņa kur mēs iestatām vienkāršu reverso starpniekserveri, izmantojot Nginx. Šajā ziņojumā mēs nodrošināsim savienojumu starp klientu un reverso starpniekserveri, izmantojot bezmaksas TLS (a.k.SSL) sertifikāts no LetsEncrypt. Es iesaku jums apskatīt iepriekš minēto rakstu par reverso starpniekserveri pamatiem.

Priekšnoteikumi

  1. Serveris ar statisku publisku IP. Šeit darbojas Nginx.
  2. Backend serveri ar paredzēto vietni, kas darbojas, izmantojot HTTP
  3. Reģistrēts domēna vārds. Es izmantošu ranvirslog.com kā mans galvenais domēna vārds, un abas vietnes atrodas FQDNs - ww1.ranvirslog.com un ww2ranvirslog.com

Uzstādīt

Tāpēc kopš pēdējās reizes IP adreses ir mainījušās, jo es atkal veicu šo iestatīšanu. Šeit ir jaunie IP un resursdatoru nosaukumi.

VM / resursdatora nosaukums Publisks IP Privāts IP Loma / funkcija
ReverseProxy 68.183.214.151 10.135.127.136 TLS galapunkts un reversais starpniekserveris
tīmeklis1 N / A 10.135.126.102 Hostings w1.ranvirslog.com

vietne virs 80. porta HTTP

web2 N / A 10.135.126.187 Hostings

ww2.ranvirslog.com

vietne virs 80. porta HTTP

DNS ieraksti tiek iestatīti kā tādi, ka abas vietnes (dažādi apakšdomēni) norāda uz to pašu statisko publisko IP. Tā ir mūsu Nginx reversās starpniekservera IP adrese:

Ieraksts Vērtība
w1.ranvirslog.com 68.183.214.151
ww2.ranvirslog.com 68.183.214.151

Lai padarītu mūsu reverso DNS darbību ar nešifrētu HTTP, mēs izveidojām divus failus mapē / etc / conf.d / nosaukts ww1.conf un w2.konfidējiet katru ar šādu konfigurāciju:

/ etc / conf.d / w1.konf

serveris
klausīties 80;
klausies [::]: 80;
servera_nosaukums ww1.ranvirslog.com;
atrašanās vieta /
proxy_pass http: // 10.135.126.102 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

/ etc / conf.d / ww2.konf

serveris
klausīties 80;
klausies [::]: 80;
servera_nosaukums ww2.ranvirslog.com;
atrašanās vieta /
proxy_pass http: // 10.135.126.187 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Operētājsistēma, kuru mēs izmantojam, ir Ubuntu 18.04 LTS un mums ir noņemts fails / etc / nginx / sites-enabled / default, lai Nginx varētu darboties tīri kā apgriezts DNS, izmantojot iepriekš redzamās konfigurācijas.

Mērķis

Kad apgrieztā DNS (un aizmugures vietnes) jau ir izveidota un darbojas, mūsu mērķis ir instalēt vienu TLS sertifikātu abiem FQDN (tas ir ww1.ranvirslog.com un ww2.ranvirslog.com) uz mūsu Nginx reversā starpniekservera.

Datplūsma starp jebkuru klientu un reverso starpniekserveri tiks šifrēta, bet trafika starp reverso starpniekserveri un aizmugures serveriem netiek šifrēta. Tomēr tas joprojām ir bezgala drošāks variants nekā HTTPS neesamība vispār. Gadījumos, kad apgrieztais starpniekserveris un dažādie tīmekļa serveri atrodas vienā un tajā pašā resursdatorā, sakiet, ja izmantojat Docker konteinerus, lai visus mitinātu vienā un tajā pašā VPS, pat šī nešifrētā trafika ir ietverta vienā resursdatorā.

Certbot instalēšana

Certbot ir klienta programma, kas darbosies mūsu reversajā starpniekserverī un veiks sarunas par TLS sertifikātu ar LetsEncrypt. LetsEncrypt tas pierādīs, ka serverim faktiski ir kontrole pār FQDN, ko tā apgalvo kontrolējoša. Mēs neuztraucamies par to, kā Certbot to dara.

Tradicionāli jūs varat izmantot Certbot kā atsevišķu programmatūru, kas vienkārši iegūs sertifikātus (kas būtībā ir tikai garas kriptogrāfiskās atslēgas) un saglabās to serverī. Bet par laimi, lielākajai daļai operētājsistēmu ir pielāgoti spraudņi Nginx, Apache un citām programmatūrām. Mēs instalēsim spraudni Certbot ar Nginx. Tas automātiski konfigurēs Nginx izmantot tikko iegūtās atslēgas un atbrīvoties no nedrošiem noteikumiem, piemēram, HTTP klausīšanās 80. portā.

Ja izmantojat Debian balstītas sistēmas, piemēram, manā gadījumā es izmantoju Ubuntu 18.04 LTS, tad instalācija ir brīze.

$ sudo apt atjauninājums
$ sudo apt instalējiet programmatūru-properties-common
$ sudo add-apt-repository Visums
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt atjauninājums
$ sudo apt instalējiet python-certbot-nginx

Citas operētājsistēmas, jūsu RedHat, Gentoo, Fedora, var izpildīt šeit uzskaitītos oficiālos norādījumus.

Kad esat instalējis Certbot ar spraudni Nginx jūsu OS kombinācijai mēs varam ķerties pie lietas.

Notiek TLS sertifikātu iegūšana

Lai iegūtu TLS sertifikātu pirmo reizi, palaidiet šādu komandu:

$ sudo certbot --nginx

Tas notiks caur virkni interaktīvu jautājumu, kā parādīts zemāk:

  1. Ievadi savu epastu

Notiek atkļūdošanas žurnāla saglabāšana / var / log / letsencrypt / letsencrypt.žurnāls
Atlasītie spraudņi: Authenticator nginx, Installer nginx
Ievadiet e-pasta adresi (izmanto steidzamai atjaunošanai un drošības paziņojumiem) (Lai atceltu, ievadiet “c”): [e-pasts aizsargāts]

  1. Piekrītiet TOS

Lūdzu, izlasiet pakalpojumu sniegšanas noteikumus vietnē https: // letsencrypt.org / dokumenti / LE-SA-v1.2.-novembris-15-2017.pdf. Jums jāpiekrīt, lai reģistrētos ACME serverī vietnē https: // acme-v02.api.ļauj šifrēt.org / direktorijs
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Gree / (C) ancel:

  1. Izvēles biļetens

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Vai jūs būtu ar mieru dalīties ar savu e-pasta adresi ar Electronic Frontier Foundation, Let’s Encrypt projekta dibinātāju un bezpeļņas organizāciju, kas izstrādā Certbot? Mēs vēlamies jums nosūtīt e-pastu par mūsu tīmekļa šifrēšanas darbu, EZF ziņām, kampaņām un veidiem, kā atbalstīt digitālo brīvību.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y) es / (N) o: Y

  1. Pēc tam tā noteiks domēnus jūsu serverī, un, ja vēlaties atlasīt visus domēnus, vienkārši nospiediet

Kuriem nosaukumiem vēlaties aktivizēt HTTPS?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: w1.ranvirslog.com
2: w2.ranvirslog.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Atlasiet atbilstošos skaitļus, atdalot tos ar komatiem un / vai atstarpēm, vai atstājiet ievadi tukšu, lai atlasītu visas parādītās opcijas (lai atceltu, ievadiet “c”):

  1. Pārvirziet visu uz TLS. Es izvēlējos 2. opciju, lai visu novirzītu uz SSL, taču izmantošanas gadījumi var atšķirties. Jaunām aizmugures instalācijām ir droši izvēlēties 2. opciju.

Lūdzu, izvēlieties, vai novirzīt HTTP trafiku uz HTTPS, noņemot HTTP piekļuvi.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1: Nav novirzīšanas - neveiciet papildu izmaiņas tīmekļa servera konfigurācijā.
2: Novirzīšana - veiciet visu pieprasījumu novirzīšanu, lai nodrošinātu piekļuvi HTTPS. Izvēlieties to jaunām vietnēm vai, ja esat pārliecināts, ka jūsu vietne darbojas HTTPS. Šīs izmaiņas var atsaukt, rediģējot tīmekļa servera konfigurāciju.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Izvēlieties atbilstošo numuru [1-2], pēc tam [ievadiet] (nospiediet taustiņu 'c', lai atceltu): 2

Ja viss noritēja labi, tas parādīs šo ziņojumu tikai jūsu domēna nosaukumiem.

Apsveicu! Jūs esat veiksmīgi iespējojis https: // ww1.ranvirslog.com un https: // ww2.ranvirslog.com Jūs varat apmeklēt FQDN un pamanīt, ka vietnēs tagad ir piekaramā atslēga, kas norāda, ka viss ir šifrēts.

Apskatiet konfigurācijas failus

Ja skatāt konfigurācijas failus, kurus mēs izveidojām iepriekš, proti, / etc / conf.d / w1.conf un / etc / conf.d / ww2.konf., jūs ievērosiet, ka visi noteikumi “Klausīties 80” ir pazuduši un ir pievienotas dažas jaunas rindas, kas serverim norāda, ka sakari ir jāšifrē un sertifikātu un taustiņu atrašanās vieta, lai veiktu minēto šifrēšanu.

Es ļoti iesaku apskatīt konfigurācijas failus, jo tas var arī iemācīt, kā pareizi instalēt sertifikātus un rakstīt konfigurācijas failus.

Sertifikāta atjaunošana

Tipiski LetsEncrypt sertifikāti ir derīgi 90 dienas, un pirms to termiņa beigām tie ir jāatjauno. Varat izmantot Certbot, lai vispirms sausā veidā palaist atjaunošanu, izpildot komandu:

$ sudo certbot atjaunot - sausa palaist

Ja darbība būs veiksmīga, tiks parādīts šāds ziņojums:

Apsveicam, visi atjaunojumi izdevās. Ir atjaunoti šādi sertifikāti:

/ etc / letsencrypt / live / ww1.ranvirslog.com / fullchain.pem (panākumi)
** DRY RUN: simulē 'certbot atjaunot' tuvu cert termiņa beigām
** (Iepriekš minētie testa sertifikāti nav saglabāti.)

Tagad jūs varat pievienot Cron darbu, kas mēģinās atjaunot katru nedēļu. Certbot neatjaunos sertifikātus, ja vien tie par to patiešām nav jāmaksā, tāpēc jums nav jāuztraucas. Faktiskās atjaunošanas komanda ir:

$ certbot atjaunot

Pievienojiet to root's cron darbam, izmantojot:

$ sudo crontab -e

Šajā uzvednē atlasiet savu iecienītāko redaktoru (ja neesat pārliecināts, izvēlieties Nano) un tagad atvērtā faila beigās pievienojiet šādas rindas:


# Piemēram, jūs varat palaist visu savu lietotāju kontu dublējumu
# pie 5 a.m katru nedēļu ar:
# 0 5 * * 1 tar -zcf / var / backups / home.tgz / home /
#
# Plašāku informāciju skatiet crontab (5) un cron (8) rokasgrāmatās
#
# m h dom mon dow komanda
* 2 * * 2 certbot atjaunošana

Tas palaiž certbot atjaunošanas komandu plkst. 2 no rīta jebkurā nejaušā minūtē, katras nedēļas otrajā dienā.

Secinājums

Ja esat jauns TLS sertifikātu lietotājs, eksperimentēt ar tādām lietām kā HSTS var būt riskanti. Tā kā šīs izmaiņas ir neatgriezeniskas. Tomēr, ja jūs vēlaties iet uz leju trušu drošības caurumu, es varu ļoti ieteikt Troja Hanta emuāru, kas ir viens no galvenajiem iedvesmas avotiem šajā rakstā.

Vulkan Linux lietotājiem
Ar katru jauno grafisko karšu paaudzi mēs redzam, kā spēļu izstrādātāji pārspēj grafiskās uzticamības robežas un tuvojas fotoreālismam. Neskatoties uz...
OpenTTD vs Simutrans
Transporta simulācijas izveide var būt jautra, relaksējoša un ārkārtīgi vilinoša. Tāpēc jums jāpārliecinās, ka izmēģināt pēc iespējas vairāk spēļu, la...
OpenTTD apmācība
OpenTTD ir viena no populārākajām biznesa simulācijas spēlēm. Šajā spēlē jums ir jāizveido brīnišķīgs transporta bizness. Tomēr jūs sāksit sākumā apmē...