Priekšnoteikumi
- Serveris ar statisku publisku IP. Šeit darbojas Nginx.
- Backend serveri ar paredzēto vietni, kas darbojas, izmantojot HTTP
- 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
serverisklausī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
serverisklausī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 --nginxTas notiks caur virkni interaktīvu jautājumu, kā parādīts zemāk:
- 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]
- 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:
- 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
- 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”):
- 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 palaistJa 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 atjaunotPievienojiet 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ā.