Oppsett
Så IP -adressene har endret seg siden sist, siden jeg gjør dette oppsettet igjen. Her er de nye IP -ene og vertsnavnene.
VM/Hostname | Offentlig IP | Privat IP | Rolle/funksjon |
ReverseProxy | 68.183.214.151 | 10.135.127.136 | TLS termineringspunkt og omvendt proxy -server |
Web1 | N/a | 10.135.126.102 | Hosting WW1.Ranvirslog.com Nettsted over port 80 http |
Web2 | N/a | 10.135.126.187 | Hosting 2. verdenskrig.Ranvirslog.com Nettsted over port 80 http |
DNS -postene er konfigurert som sådan begge nettstedene (forskjellige underdomener) peker på den samme statiske offentlige IP -en. Dette tilfeldigvis er vår Nginx Reverse Proxys IP -adresse:
En rekord | Verdi |
WW1.Ranvirslog.com | 68.183.214.151 |
2. verdenskrig.Ranvirslog.com | 68.183.214.151 |
For å få omvendt DNS til å fungere over ukrypterte HTTP, opprettet vi to filer i /etc /conf.d/ navngitt WW1.Conf og WW2.Konf hver med følgende konfigurasjon:
/etc/conf.D/WW1.konf
server
Lytt 80;
Hør [::]: 80;
Server_name WW1.Ranvirslog.com;
plassering /
proxy_pass http: // 10.135.126.102/;
proxy_buffering av;
proxy_set_header x-real-ip $ remote_addr;
/etc/conf.D/WW2.konf
server
Lytt 80;
Hør [::]: 80;
Server_name WW2.Ranvirslog.com;
plassering /
proxy_pass http: // 10.135.126.187/;
proxy_buffering av;
proxy_set_header x-real-ip $ remote_addr;
Operativsystemet vi bruker er Ubuntu 18.04 LTS og vi har fjernet Filen/etc/nginx/nettstedene-aktivert/standard slik at Nginx kan fungere rent som en omvendt DNS ved å bruke konfigurasjonene vist ovenfor.
Objektiv
Med omvendt DNS (og backend -nettstedene) som allerede er i gang, er vårt mål å installere et enkelt TLS -sertifikat for begge FQDN -ene (det er WW1.Ranvirslog.com og WW2.Ranvirslog.com) på vår nginx omvendt proxy.
Trafikken mellom enhver klient og omvendt proxy kommer til å bli kryptert, men trafikken mellom omvendt proxy og backend -serverne er ikke kryptert. Imidlertid er dette fremdeles et uendelig mer sikkert alternativ enn å ikke ha https i det hele tatt. For tilfeller der omvendt proxy og de forskjellige webserverne er på samme vert, si at hvis du bruker Docker -containere for å være vertskap.
Installere CertBot
CertBot er et klientprogram som kjører på vår omvendte proxy -server og forhandler om et TLS -sertifikat med Letsencrypt. Det vil vise seg å laSencrypt at serveren faktisk har kontroll over FQDN -ene som den hevder å ha kontroll over. Vi vil ikke bekymre oss for hvordan certbot gjør det.
Tradisjonelt kan du bruke CertBot som en frittstående programvare som bare vil få sertifikatene (som i utgangspunktet bare er lange kryptografiske nøkler) og lagre den på serveren. Men heldigvis, for de fleste operativsystemer er det tilpassede plugins for Nginx, Apache og andre programvare. Vi installerer CertBot med Nginx -plugin. Dette vil automatisk konfigurere Nginx for å bruke de nyinnhentede nøklene og bli kvitt usikre regler som å lytte til HTTP på port 80.
Hvis du bruker Debian -baserte systemer, som i mitt tilfelle bruker jeg Ubuntu 18.04 LTS, da er installasjonen en lek.
$ sudo apt oppdatering
$ sudo apt installer programvare-properties-felles
$ sudo add-apt-repository univers
$ sudo add-apt-repository ppa: certbot/certbot
$ sudo apt oppdatering
$ sudo apt install python-certbot-nginx
Andre operativsystemer, din Redhat, Gentoo, Fedora kan følge de offisielle instruksjonene som oppført her.
Når du har installert CertBot med Nginx -plugin For din kombinasjon av OS kan vi komme til virksomhet.
Få TLS -sertifikater
For å få TLS -sertifikatet for første gang, kjør følgende kommando:
$ sudo certbot --nginx
Dette kommer til å løpe gjennom en serie interaktive spørsmål, som vist nedenfor:
Lagrer feilsøkingslogg til /var/log/letsencrypt/letsencrypt.Logg
Plugins valgt: Authenticator nginx, installasjonsprogram nginx
Skriv inn e -postadresse (brukt for akutt fornyelses- og sikkerhetsvarsler) (Enter 'C' for å avbryte): [email protected]
Vennligst les vilkårene for https: // letsencrypt.org/dokumenter/le-sa-v1.2-november-15-2017.PDF. Du må være enig for å registrere deg hos ACME-serveren på https: // acme-v02.api.Letsencrypt.org/katalog
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) Gree/(c) Ancel: a
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Vil du være villig til å dele e-postadressen din med Electronic Frontier Foundation, en grunnleggende partner for Let's Encrypt-prosjektet og den ideelle organisasjonen som utvikler CertBot? Vi vil gjerne sende deg e -post om vårt arbeid som krypterer nettet, EFF -nyheter, kampanjer og måter å støtte digital frihet.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y) es/(n) o: y
Hvilke navn vil du aktivere HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: WW1.Ranvirslog.com
2: WW2.Ranvirslog.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Velg passende tall atskilt med komma og/eller mellomrom, eller la inngangen være tomt for å velge alle alternativene som vises (skriv inn 'C' for å avbryte):
Velg om du vil omdirigere HTTP -trafikk til HTTPS, fjerne HTTP -tilgang.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Ingen viderekobling - Gjør ingen ytterligere endringer i Webserver -konfigurasjonen.
2: Redirect - Gjør alle forespørsler omdirigert for å sikre HTTPS -tilgang. Velg dette for nye nettsteder, eller hvis du er sikker på at nettstedet ditt fungerer på HTTPS. Du kan angre denne endringen ved å redigere webserverens konfigurasjon.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Velg riktig nummer [1-2] deretter [Enter] (trykk 'C' for å avbryte): 2
Hvis alt gikk bra, vil det vise deg denne meldingen, bare for domenenavnene dine i stedet.
Gratulerer! Du har aktivert https: // ww1.Ranvirslog.com og https: // ww2.Ranvirslog.com Du kan besøke FQDN -ene og legge merke til at nettstedene nå har hengelås -tegnet som antyder at alt er kryptert.
Se på konfigurasjonsfilene
Hvis du ser konfigurasjonsfilene vi opprettet tidligere, nemlig /etc /conf.D/WW1.Conf og /etc /conf.D/WW2.Conf, du vil legge merke til at alle "lytt 80" -reglene har forsvunnet og noen få nye linjer er lagt til, fortell serveren at kommunikasjonen må krypteres og plasseringen av sertifikater og nøkler for å utføre nevnte kryptering.
Jeg anbefaler på det sterkeste å se gjennom konfigurasjonsfilene, siden det også kan lære deg hvordan du kan installere certs og skrive konfigurasjonsfiler riktig.
Sertifiseringsfornyelse
Typiske letsencrypt -sertifikater er gyldige i 90 dager, og før de utløper må du fornye dem. Du kan bruke CertBot til først å tørke fornyelsen, ved å kjøre kommandoen:
$ sudo certbot forny
Hvis operasjonen lykkes, vil du se følgende melding:
Gratulerer, alle fornyelser lyktes. Følgende sertifikater er fornyet:
/etc/letsencrypt/live/ww1.Ranvirslog.com/fullchain.PEM (suksess)
** Dry Run: Simulering 'CertBot Renew' nær Cert Expiry
** (Testsertifikatene ovenfor er ikke lagret.)
Nå kan du legge til en Cron -jobb som vil prøve fornyelse hver uke eller så. Certbot vil ikke fornye sertifikatene med mindre de virkelig er på grunn av det, slik at du ikke trenger å bekymre deg. Kommandoen for faktisk fornyelse er:
$ CertBot Renew
Legg den til Root's Cron Job ved å bruke:
$ sudo crontab -e
I følgende ledetekst velger du favorittredigereren din (velg Nano hvis du er usikker) og legg til følgende linjer på slutten av den nå åpnede filen:
..
# For eksempel kan du kjøre en sikkerhetskopi av alle brukerkontoer
# kl. 5 a.m hver uke med:
# 0 5 * * 1 TAR -ZCF/VAR/BACKUPS/HJEM.TGZ /Hjem /
#
# For mer informasjon, se de manuelle sidene til Crontab (5) og Cron (8)
#
# m h dom mon dow kommando
* 2 * * 2 Certbot Renew
Dette vil kjøre CertBot Renew -kommandoen klokka 2 om morgenen når som helst, på den andre dagen i hver uke.
Hvis du er ny på TLS -sertifikater, kan det være risikabelt å eksperimentere med ting som HST. Siden disse endringene er irreversible. Imidlertid, hvis du ønsker å gå ned i kaninhullet av sikkerhet, kan jeg anbefale Troy Hunts blogg, som er en av hovedinspirasjonen bak denne skrivingen.