Leidžia užšifruoti

„Nginx“ atvirkštinis tarpinis serveris su HTTPS per „LetsEncrypt“

„Nginx“ atvirkštinis tarpinis serveris su HTTPS per „LetsEncrypt“
Tai yra mano tęsinys ankstesnis įrašas kur mes nustatome paprastą atvirkštinį tarpinį serverį naudodami „Nginx“. Šiame įraše mes užtikrinsime ryšį tarp kliento ir atvirkštinio tarpinio serverio naudodami nemokamą TLS (a.k.SSL) pažymėjimą iš „LetsEncrypt“. Aš raginu jus patikrinti pirmiau minėtą įrašą apie atvirkštinį įgaliojimą, kad būtų pateikti pagrindai.

Būtinos sąlygos

  1. Serveris su statiniu viešu IP. Čia veikia „Nginx“.
  2. Užpakaliniai serveriai, kuriuose numatyta svetainė veikia per HTTP
  3. Registruotas domeno vardas. Aš naudosiu ranvirslog.com kaip mano pagrindinis domeno vardas, o abi svetainės yra FQDN - ww1.ranvirslog.com ir ww2ranvirslog.com

Sąranka

Taigi IP adresai pasikeitė nuo paskutinio karto, nes aš dar kartą darau šią sąranką. Čia yra nauji IP ir prieglobos vardai.

VM / pagrindinio kompiuterio vardas Viešasis IP Privatus IP Vaidmuo / funkcija
ReverseProxy 68.183.214.151 10.135.127.136 TLS galinis taškas ir atvirkštinis tarpinis serveris
žiniatinklis1 Nėra 10.135.126.102 Hostingas w1.ranvirslog.com

svetainė per 80 prievadą HTTP

internetas2 Nėra 10.135.126.187 Hostingas

WW2.ranvirslog.com

svetainė per 80 prievadą HTTP

DNS įrašai nustatomi, nes abi svetainės (skirtingi padomeniai) nurodo tą patį statinį viešąjį IP. Tai yra mūsų „Nginx“ atvirkštinio tarpinio serverio IP adresas:

Įrašas Vertė
w1.ranvirslog.com 68.183.214.151
WW2.ranvirslog.com 68.183.214.151

Kad atvirkštinis DNS veiktų per nešifruotą HTTP, sukūrėme du failus aplanke / etc / conf.d / pavadintas ww1.conf ir w2.konfigūruokite kiekvieną iš šių konfigūracijų:

/ etc / conf.d / w1.konf

serveris
klausytis 80;
klausyk [::]: 80;
serverio_vardas ww1.ranvirslog.com;
vieta /
„proxy_pass“ http: // 10.135.126.102 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

/ etc / conf.d / w2.konf

serveris
klausytis 80;
klausyk [::]: 80;
serverio vardas ww2.ranvirslog.com;
vieta /
„proxy_pass“ http: // 10.135.126.187 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;

Operacinė sistema, kurią naudojame, yra „Ubuntu 18“.04 LTS ir mes turime pašalinta failas / etc / nginx / sites-enabled / default, todėl Nginx gali veikti tik kaip atvirkštinis DNS naudodamas aukščiau pateiktus konfigūracijas.

Tikslas

Kai atvirkštinis DNS (ir antrinės svetainės) jau veikia ir veikia, mūsų tikslas yra įdiegti vieną TLS sertifikatą abiem FQDN (tai yra ww1.ranvirslog.com ir w2.ranvirslog.com) ant mūsų „Nginx“ atvirkštinio įgaliojimo.

Srautas tarp bet kurio kliento ir atvirkštinio tarpinio serverio bus užšifruotas, tačiau srautas tarp atvirkštinio tarpinio serverio ir vidinių serverių nėra užšifruotas. Tačiau tai vis tiek yra be galo saugesnė parinktis nei iš viso neturėti HTTPS. Tais atvejais, kai atvirkštinis tarpinis serveris ir įvairūs žiniatinklio serveriai yra tame pačiame pagrindiniame kompiuteryje, tarkime, jei naudojate „Docker“ konteinerius tam, kad priimtumėte visus tuos pačius VPS, tada net ir šis nešifruotas srautas yra viename pagrindiniame kompiuteryje.

„Certbot“ diegimas

„Certbot“ yra kliento programa, kuri veiks mūsų atvirkštiniame tarpiniame serveryje ir derėsis dėl TLS sertifikato su „LetsEncrypt“. Tai įrodys „LetsEncrypt“, kad serveris iš tikrųjų kontroliuoja FQDN, kuriuos jis tvirtina kontroliuojantis. Nesijaudinsime, kaip tai daro „Certbot“.

Tradiciškai galite naudoti „Certbot“ kaip atskirą programinę įrangą, kuri tiesiog gaus sertifikatus (kurie iš esmės yra tik ilgi kriptografiniai raktai) ir išsaugos jį serveryje. Laimei, daugumai operacinių sistemų yra pritaikyti „Nginx“, „Apache“ ir kitų programinių priedų. Įdiegsime „Certbot“ su „Nginx“ papildiniu. Tai automatiškai sukonfigūruos „Nginx“ naudoti naujai gautus raktus ir atsikratys nesaugių taisyklių, tokių kaip HTTP klausymas 80 prievade.

Jei naudojate „Debian“ pagrįstas sistemas, pavyzdžiui, mano atveju, naudoju „Ubuntu 18“.04 LTS, tada instaliacija yra vėjelis.

$ sudo apt atnaujinimas
$ sudo apt įdiekite programinę įrangą-properties-common
$ sudo add-apt-repository visata
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt atnaujinimas
$ sudo apt įdiekite python-certbot-nginx

Kitos operacinės sistemos, jūsų „RedHat“, „Gentoo“, „Fedora“, gali laikytis oficialių instrukcijų, nurodytų čia.

Įdiegę „Certbot“ su „Nginx“ papildiniu jūsų OS deriniui galime pradėti dirbti.

Gaunami TLS sertifikatai

Norėdami gauti TLS sertifikatą pirmą kartą, vykdykite šią komandą:

$ sudo certbot --nginx

Tai bus nagrinėjama interaktyvių klausimų serijoje, kaip parodyta žemiau:

  1. Įrašykite savo el. paštą

Išsaugomas derinimo žurnalas / var / log / letsencrypt / letsencrypt.žurnalas
Pasirinkti papildiniai: „Authenticator nginx“, „Installer nginx“
Įveskite el. Pašto adresą (naudojamas skubiam atnaujinimui ir saugos pranešimams) (norėdami atšaukti įveskite „c“): [apsaugotas el. paštu]

  1. Sutikite su TOS

Perskaitykite paslaugų teikimo sąlygas adresu https: // letsencrypt.org / dokumentai / LE-SA-v1.2017 m. Lapkričio 2 d. - 15-15 d.pdf. Turite sutikti, kad galėtumėte užsiregistruoti ACME serveryje adresu https: // acme-v02.api.leidžiašifruoti.org / katalogas
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(G) gree / (C) ancel:

  1. Neprivalomas naujienlaiškis

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ar norėtumėte pasidalinti savo el. Pašto adresu su „Electronic Frontier Foundation“, projekto „Let's Encrypt“ įkūrėju ir ne pelno organizacija, kuriančia „Certbot“, partneriu? Norėtume išsiųsti jums el. Laišką apie mūsų interneto svetainių šifravimą, EŽF naujienas, kampanijas ir būdus, kaip paremti skaitmeninę laisvę.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y) es / (N) o: Y

  1. Tada jis aptiks jūsų serverio domenų pavadinimus ir, jei norite pasirinkti visus domenus, tiesiog paspauskite

Kuriems vardams norite suaktyvinti HTTPS?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: w1.ranvirslog.com
2: WW2.ranvirslog.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Pasirinkite tinkamus skaičius, atskirtus kableliais ir (arba) tarpais, arba palikite įvestį tuščią, kad pasirinktumėte visas rodomas parinktis (norėdami atšaukti įveskite „c“):

  1. Nukreipkite viską į TLS. Aš pasirinkau 2 variantą, norėdamas viską peradresuoti į SSL, tačiau jūsų naudojimo atvejai gali skirtis. Jei norite įdiegti naujus išorinius įrenginius, saugu pasirinkti 2 variantą.

Pasirinkite, ar norite nukreipti HTTP srautą į HTTPS, pašalindami HTTP prieigą.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1: Nėra peradresavimo - daugiau nekeiskite žiniatinklio serverio konfigūracijos.
2: Peradresuoti - visus prašymus peradresuoti, kad būtų užtikrinta prieiga prie HTTPS. Pasirinkite tai naujoms svetainėms arba jei esate įsitikinę, kad jūsų svetainė veikia naudojant HTTPS. Šį pakeitimą galite anuliuoti redaguodami žiniatinklio serverio konfigūraciją.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Pasirinkite reikiamą skaičių [1-2], tada [įveskite] (norėdami atšaukti paspauskite „c“): 2

Jei viskas pavyko gerai, jums bus rodomas šis pranešimas, o tik jūsų domenų vardams.

Sveikiname! Sėkmingai įgalinote https: // ww1.ranvirslog.com ir https: // WW2.ranvirslog.com Galite apsilankyti FQDN ir pastebėti, kad dabar svetainėse yra spynos ženklas, rodantis, kad viskas užšifruota.

Pažvelkite į konfigūracijos failus

Jei peržiūrėsite anksčiau sukurtus konfigūracijos failus, būtent / etc / conf.d / w1.conf ir / etc / conf.d / w2.konf., pastebėsite, kad visos „Klausyti 80“ taisyklės išnyko ir buvo pridėtos kelios naujos eilutės. Serveriui nurodoma, kad ryšys turi būti užšifruotas ir pažymėjimų bei raktų vieta norint atlikti minėtą šifravimą.

Labai rekomenduoju peržiūrėti konfigūracijos failus, nes tai taip pat gali išmokyti jus tinkamai įdiegti sertifikatus ir rašyti konfigūracijos failus.

Sertifikato atnaujinimas

Tipiški „LetsEncrypt“ sertifikatai galioja 90 dienų ir, kol pasibaigia jų galiojimo laikas, turite juos atnaujinti. Norėdami iš naujo paleisti atnaujinimą, galite naudoti „Certbot“, vykdydami komandą:

$ sudo certbot atnaujinti - džiovinti

Jei operacija pavyks, pamatysite šį pranešimą:

Sveikiname, visi atnaujinimai pavyko. Šie sertifikatai buvo atnaujinti:

/ etc / letsencrypt / live / ww1.ranvirslog.com / fullchain.pem (sėkmė)
** DRY RUN: imituojamas „certbot atnaujinimas“ arti cert galiojimo pabaigos
** (Aukščiau pateikti bandymų sertifikatai nebuvo išsaugoti.)

Dabar galite pridėti „Cron“ darbą, kurį kas savaitę bandysite atnaujinti. „Certbot“ neatnaujins sertifikatų, nebent jie iš tikrųjų priklauso nuo to, todėl jums nereikės jaudintis. Faktinio atnaujinimo komanda yra:

$ certbot atnaujinti

Pridėkite jį prie šaknies „cron“ darbo naudodami:

$ sudo crontab -e

Šiame raginime pasirinkite mėgstamą redaktorių (jei nesate tikri, pasirinkite „Nano“) ir dabar atidaryto failo pabaigoje pridėkite šias eilutes:


# Pavyzdžiui, galite paleisti visų savo vartotojo abonementų atsarginę kopiją
# 5 a.m kiekvieną savaitę su:
# 0 5 * * 1 tar -zcf / var / backups / home.tgz / home /
#
# Norėdami gauti daugiau informacijos, žiūrėkite „crontab“ (5) ir „cron“ (8) vadovo puslapius
#
# m h dom mon dow komanda
* 2 * * 2 certbot atnaujinti

Tai vykdys „certbot“ atnaujinimo komandą 2 valandą ryto bet kurią atsitiktinę minutę, antrąją kiekvienos savaitės dieną.

Išvada

Jei dar nesinaudojote TLS sertifikatais, eksperimentuoti su tokiais dalykais kaip HSTS gali būti rizikinga. Kadangi šie pokyčiai yra negrįžtami. Tačiau, jei norite žlugti triušio saugumo skylėje, galiu labai rekomenduoti Troy Hunt tinklaraštį, kuris yra vienas iš pagrindinių šio rašymo įkvėpėjų.

Pridėkite pelės gestus prie „Windows 10“ naudodami šiuos nemokamus įrankius
Pastaraisiais metais kompiuteriai ir operacinės sistemos labai išsivystė. Buvo laikas, kai vartotojai turėjo naudoti komandas naršydami per failų tvar...
Valdykite ir valdykite pelės judėjimą tarp kelių „Windows 10“ monitorių
„Dual Display Mouse Manager“ leidžia jums valdyti ir konfigūruoti pelės judėjimą tarp kelių monitorių, sulėtinant jo judėjimą šalia sienos. „Windows 1...
„WinMouse“ leidžia tinkinti ir pagerinti pelės žymeklio judėjimą „Windows“ kompiuteryje
Jei norite pagerinti numatytąsias pelės žymiklio funkcijas, naudokite nemokamą programinę įrangą „WinMouse“. Tai prideda daugiau funkcijų, kurios padė...