Pogoji
- Strežnik s statičnim javnim IP-jem. Tu se izvaja Nginx.
- Backend strežniki s predvidenim spletnim mestom, ki se izvaja prek HTTP
- Registrirano ime domene. Uporabljal bom ranvirslog.com kot moje primarno domensko ime in dve spletni strani sta v FQDN-jih - ww1.ranvirslog.com in ww2ranvirslog.com
Nastaviti
IP naslovi so se torej spremenili od zadnjega, odkar ponovno izvajam to nastavitev. Tu so novi IP-ji in imena gostiteljev.
VM / ime gostitelja | Javni IP | Zasebni IP | Vloga / funkcija |
ReverseProxy | 68.183.214.151 | 10.135.127.136 | Končna točka TLS in povratni strežnik proxy |
splet1 | N / A | 10.135.126.102 | Gostovanje ww1.ranvirslog.com spletno mesto prek vrat 80 HTTP |
splet2 | N / A | 10.135.126.187 | Gostovanje ww2.ranvirslog.com spletno mesto prek vrat 80 HTTP |
Zapisi DNS so nastavljeni kot taki, tako da spletna mesta (različne poddomene) kažejo na isti statični javni IP. To je IP naslov našega povratnega strežnika Nginx:
Zapis | Vrednost |
ww1.ranvirslog.com | 68.183.214.151 |
ww2.ranvirslog.com | 68.183.214.151 |
Da bi naš povratni DNS deloval prek nešifriranega HTTP-ja, smo v / etc / conf ustvarili dve datoteki.d / z imenom ww1.conf in ww2.konfigurirajte vsakega z naslednjo konfiguracijo:
/ etc / conf.d / w1.conf
strežnikposlušaj 80;
poslušaj [::]: 80;
ime_strežnika ww1.ranvirslog.com;
lokacija /
proxy_pass http: // 10.135.126.102 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;
/ etc / conf.d / w2.conf
strežnikposlušaj 80;
poslušaj [::]: 80;
ime_strežnika ww2.ranvirslog.com;
lokacija /
proxy_pass http: // 10.135.126.187 /;
proxy_buffering off;
proxy_set_header X-Real-IP $ remote_addr;
Operacijski sistem, ki ga uporabljamo, je Ubuntu 18.04 LTS in že imamo odstranjena datoteko / etc / nginx / sites-enabled / default, tako da lahko Nginx deluje zgolj kot povratni DNS z zgoraj prikazanimi konfiguracijami.
Cilj
Ker je obratni DNS (in zaledna spletna mesta) že v teku in deluje, je naš cilj namestiti eno potrdilo TLS za oba FQDN-ja (to je ww1.ranvirslog.com in ww2.ranvirslog.com) na našem povratnem strežniku Nginx.
Promet med katerim koli odjemalcem in povratnim strežnikom proxy bo šifriran, promet med obratnim strežnikom proxy in zalednim strežnikom pa ni šifriran. Vendar je to še vedno neskončno varnejša možnost, kot da sploh ne bi imeli HTTPS. V primerih, ko sta obratni strežnik proxy in različni spletni strežniki na istem gostitelju, recimo, če uporabljate Dockerjeve vsebnike za gostovanje vseh na istem VPS, potem je tudi ta nekodiran promet na enem gostitelju.
Namestitev Certbota
Certbot je odjemalski program, ki se bo zagnal na našem povratnem strežniku proxy in se z LetsEncrypt pogajal o potrdilu TLS. LetsEncrypt-u bo dokazal, da strežnik dejansko nadzoruje FQDN-je, za katere trdi, da imajo nadzor nad. Ne bo nas skrbelo, kako to počne Certbot.
Običajno lahko Certbot uporabite kot samostojno programsko opremo, ki bo samo dobila potrdila (ki so v bistvu le dolgi kriptografski ključi) in jih shranila na strežnik. Na srečo pa za večino operacijskih sistemov obstajajo vtičniki po meri za Nginx, Apache in druge programe. Certbot bomo namestili z vtičnikom Nginx. S tem bo Nginx samodejno konfiguriran za uporabo novo pridobljenih ključev in se znebil negotovih pravil, kot je poslušanje HTTP na vratih 80.
Če uporabljate sisteme, ki temeljijo na Debianu, tako kot v mojem primeru, uporabljam Ubuntu 18.04 LTS, potem je namestitev prepih.
$ sudo apt posodobitev$ sudo apt namestite programske lastnosti-skupne
$ sudo add-apt-repository vesolje
$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt posodobitev
$ sudo apt namestite python-certbot-nginx
Drugi operacijski sistemi, vaši RedHat, Gentoo in Fedora, lahko sledijo uradnim navodilom, navedenim tukaj.
Ko namestite Certbot z vtičnikom Nginx za vašo kombinacijo OS se lahko lotimo posla.
Pridobivanje potrdil TLS
Če želite prvič pridobiti potrdilo TLS, zaženite naslednji ukaz:
$ sudo certbot --nginxTo bo potekalo skozi vrsto interaktivnih vprašanj, kot je prikazano spodaj:
- Vpišite svoj elektronski naslov
Shranjevanje dnevnika odpravljanja napak v / var / log / letsencrypt / letsencrypt.log
Izbrani vtičniki: Authenticator nginx, Installer nginx
Vnesite e-poštni naslov (uporablja se za nujna obvestila o podaljšanju in varnost) (za preklic vnesite 'c'): [e-pošta zaščitena]
- Strinjam se s TOS
Prosimo, preberite Pogoje storitve na https: // letsencrypt.org / documents / LE-SA-v1.2. november-15-2017.pdf. Za registracijo s strežnikom ACME na https: // acme-v02 se morate strinjati.api.letsencrypt.org / imenik
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) gree / (C) ancel: A
- Izbirno glasilo
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Bi bili pripravljeni svoj elektronski naslov deliti z Electronic Frontier Foundation, ustanovnim partnerjem projekta Let's Encrypt in neprofitno organizacijo, ki razvija Certbot? Radi bi vam poslali e-pošto o našem delu, ki šifrira splet, novice EFF, kampanje in načine za podporo digitalni svobodi.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y) es / (N) o: Y
- Nato bo zaznal imena domen na vašem strežniku in če želite izbrati vse domene, preprosto pritisnite
Za katera imena bi radi aktivirali HTTPS?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: ww1.ranvirslog.com
2: ww2.ranvirslog.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Izberite ustrezne številke, ločene z vejicami in / ali presledki, ali pustite vnos prazen, da izberete vse prikazane možnosti (za preklic vnesite 'c'):
- Vse preusmerite na TLS. Izbral sem možnost 2, da vse preusmerim na SSL, vendar se vaš primer uporabe lahko razlikuje. Za nove zaledne namestitve je varno izbrati možnost 2.
Izberite, ali želite preusmeriti promet HTTP na HTTPS, tako da odstranite dostop HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Brez preusmeritve - ne spreminjajte konfiguracije spletnega strežnika.
2: Preusmeritev - preusmerite vse zahteve, da zaščitite dostop HTTPS. Izberite to za nova spletna mesta ali če ste prepričani, da vaše spletno mesto deluje na HTTPS. To spremembo lahko razveljavite z urejanjem konfiguracije spletnega strežnika.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Izberite ustrezno številko [1-2] in nato [enter] (za preklic pritisnite 'c'): 2
Če je šlo vse v redu, vam bo to sporočilo prikazalo samo za imena domen.
Vse čestitke! Uspešno ste omogočili https: // ww1.ranvirslog.com in https: // ww2.ranvirslog.com Lahko obiščete FQDN-je in opazite, da imajo spletna mesta zdaj znak ključavnice, ki kaže, da je vse šifrirano.
Poglejte konfiguracijske datoteke
Če si ogledate konfiguracijske datoteke, ki smo jih ustvarili prej, in sicer / etc / conf.d / w1.conf in / etc / conf.d / w2.conf, boste opazili, da so vsa pravila »Listen 80« izginila in dodanih je nekaj novih vrstic, ki strežniku sporočajo, da je treba komunikacijo šifrirati in lokacijo certifikatov in ključev za izvedbo omenjenega šifriranja.
Močno priporočam, da si ogledate konfiguracijske datoteke, saj vas lahko tudi naučite, kako pravilno namestiti certifikate in pisati konfiguracijske datoteke.
Podaljšanje certifikata
Tipična potrdila LetsEncrypt so veljavna 90 dni in preden potečejo, jih morate obnoviti. Certbot lahko uporabite za prvo suho zagon obnove, tako da zaženete ukaz:
$ sudo certbot renew --dry-runČe je operacija uspela, boste videli naslednje sporočilo:
Čestitamo, vse obnovitve so uspele. Obnovljeni so bili naslednji certifikati:
/ etc / letsencrypt / live / ww1.ranvirslog.com / polna veriga.pem (uspeh)** DRY RUN: simuliranje "obnavljanja certbota" blizu izteka veljavnosti certbota
** (Zgornja preizkusna potrdila niso bila shranjena.)
Zdaj lahko dodate opravilo Cron, ki se bo poskušalo podaljšati vsak teden. Certbot certifikatov ne bo podaljšal, razen če za to resnično plačajo, zato vam ni treba skrbeti. Ukaz za dejansko podaljšanje je:
$ certbot obnoviDodajte ga v korenovo opravilo cron z uporabo:
$ sudo crontab -eV naslednjem pozivu izberite svoj najljubši urejevalnik (izberite Nano, če niste prepričani) in dodajte naslednje vrstice na konec zdaj odprte datoteke:
..# Na primer, lahko zaženete varnostno kopijo vseh svojih uporabniških računov
# ob 5 a.m vsak teden z:
# 0 5 * * 1 tar -zcf / var / varnostne kopije / home.tgz / domov /
#
# Za več informacij glejte strani z navodili za crontab (5) in cron (8)
#
# m h dom mon dow ukaz
* 2 * * 2 certbot podaljša
To bo zagnalo ukaz za obnovo certbota ob 2. uri zjutraj ob kateri koli naključni minuti, drugi dan v tednu.
Zaključek
Če certifikate TLS ne poznate, je lahko eksperimentiranje s stvarmi, kot je HSTS, tvegano. Ker so te spremembe nepovratne. Če pa se želite spustiti po zajčji luknji varnosti, vam toplo priporočam blog Troy Hunt, ki je eden glavnih navdihov tega pisanja.