Impostare
Quindi gli indirizzi IP sono cambiati dall'ultima volta, dal momento che sto facendo di nuovo questa configurazione. Ecco i nuovi IP e nomi ospitanti.
VM/Hostname | IP pubblico | IP privato | Ruolo/funzione |
ReverseProxy | 68.183.214.151 | 10.135.127.136 | Punto di terminazione TLS e server proxy inverso |
Web1 | N / A | 10.135.126.102 | Hosting WW1.RANVIRSLOG.com Sito web sulla porta 80 HTTP |
Web2 | N / A | 10.135.126.187 | Ospitando WW2.RANVIRSLOG.com Sito web sulla porta 80 HTTP |
I record DNS sono impostati in quanto tali entrambi i siti Web (diversi sottodomi) indicano lo stesso IP pubblico statico. Questo sembra essere l'indirizzo IP del proxy NGINX:
Un record | Valore |
ww1.RANVIRSLOG.com | 68.183.214.151 |
WW2.RANVIRSLOG.com | 68.183.214.151 |
Per far funzionare il nostro DNS inverso su HTTP non crittografato, abbiamo creato due file in /etc /conf.d/ denominato ww1.conf e ww2.Conf Ognuno con la seguente configurazione:
/etc/conf.d/ww1.conf
server
Ascolta 80;
Ascolta [::]: 80;
server_name ww1.RANVIRSLOG.com;
posizione /
proxy_pass http: // 10.135.126.102/;
Proxy_Buffering Off;
proxy_set_header X-REAL-IP $ remote_addr;
/etc/conf.d/ww2.conf
server
Ascolta 80;
Ascolta [::]: 80;
server_name ww2.RANVIRSLOG.com;
posizione /
proxy_pass http: // 10.135.126.187/;
Proxy_Buffering Off;
proxy_set_header X-REAL-IP $ remote_addr;
Il sistema operativo che stiamo usando è Ubuntu 18.04 LTS e noi abbiamo RIMOSSO il file/etc/nginx/siti abilitati/predefinito in modo che nginx possa agire esclusivamente come DN inverso utilizzando le configurazioni mostrate sopra.
Obbiettivo
Con il DNS inverso (e i siti Web di backend) già attivo e funzionante, il nostro obiettivo è installare un singolo certificato TLS per entrambi i FQDN (che è WW1.RANVIRSLOG.com e ww2.RANVIRSLOG.com) sul nostro proxy inverso Nginx.
Il traffico tra qualsiasi client e il proxy inverso verrà crittografato ma il traffico tra il proxy inverso e i server back -end non è crittografato. Tuttavia, questa è ancora un'opzione infinitamente più sicura che non avere HTTPS. Per i casi in cui il proxy inverso e i vari server Web sono sullo stesso host, diciamo che se si utilizzano contenitori Docker per ospitare tutti sullo stesso VPS, anche questo traffico non crittografato è contenuto su un singolo host.
Installazione di certbot
CertBot è un programma client che verrà eseguito sul nostro server proxy inverso e negozierà un certificato TLS con letSTancrypt. Dimostrerà di consentire che il server ha effettivamente il controllo delle FQDN su cui afferma di avere il controllo su. Non ci preoccuperemo di come lo fa Certbot.
Tradizionalmente, puoi utilizzare CERTBOT come software autonomo che otterrà solo i certificati (che sono fondamentalmente solo chiavi crittografiche lunghe) e salvarlo sul server. Ma per fortuna, per la maggior parte dei sistemi operativi ci sono plugin personalizzati per Nginx, Apache e altri software. Installeremo il plug -in CERTBOT con NGINX. Questo configurerà automaticamente Nginx per utilizzare le chiavi appena ottenute e sbarazzarsi di regole non sicure come l'ascolto di HTTP sulla porta 80.
Se stai usando sistemi basati su Debian, come nel mio caso, sto usando Ubuntu 18.04 LTS, quindi l'installazione è un gioco da ragazzi.
$ sudo apt update
$ sudo APT Installa software-Properties-Common
$ sudo add-apt-repository universe
$ sudo ADD-APP-Repository PPA: certbot/certbot
$ sudo apt update
$ sudo apt Installa Python-certbot-nginx
Altri sistemi operativi, il tuo Redhat, Gentoo, Fedora può seguire le istruzioni ufficiali come elencate qui.
Una volta installato CERTBOT con plugin Nginx Per la tua combinazione di sistema operativo possiamo scendere al business.
Ottenere certificati TLS
Per ottenere il certificato TLS per la prima volta, eseguire il seguente comando:
$ sudo certbot --nginx
Questo eseguirà una serie di domande interattive, come mostrato di seguito:
Salvare il registro di debug a /var/log/letsencrypt/letsencrypt.tronco d'albero
Plugin selezionati: Authenticator Nginx, installatore NGINX
Immettere l'indirizzo e -mail (utilizzato per le comunicazioni di rinnovo urgente e di sicurezza) (immettere 'c' per annullare): [email protected]
Si prega di leggere i Termini di servizio su https: // letsencrypt.Org/Documenti/Le-SA-V1.2 novembre-15-2017.PDF. È necessario accettare per registrarsi con il server ACME su https: // ACME-V02.API.LetSencrypt.Org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) GREE/(c) ANCEL: a
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Saresti disposto a condividere il tuo indirizzo email con la Frontier Foundation Electronic, un partner fondatore del progetto LeT's Cript e l'organizzazione senza scopo di lucro che sviluppa CERTBOT? Vorremmo inviarti un'e -mail sul nostro lavoro che crittona il web, le notizie EFF, le campagne e i modi per supportare la libertà digitale.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y) es/(n) o: y
Per quali nomi vorresti attivare HTTPS?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: ww1.RANVIRSLOG.com
2: WW2.RANVIRSLOG.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Selezionare i numeri appropriati separati da virgole e/o spazi o lasciare input in bianco per selezionare tutte le opzioni mostrate (Enter 'C' per annullare):
Si prega di scegliere se reindirizzare o meno il traffico HTTP a HTTPS, rimuovendo l'accesso HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Nessun reindirizzamento: non apportare ulteriori modifiche alla configurazione del server web.
2: reindirizzamento: effettuare tutte le richieste reindirizzarsi per garantire l'accesso HTTPS. Scegli questo per nuovi siti o se sei sicuro che il tuo sito funzioni su HTTPS. Puoi annullare questa modifica modificando la configurazione del tuo server web.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Seleziona il numero appropriato [1-2] quindi [ENTER] (premere 'C' per annullare): 2
Se tutto è andato bene, ti mostrerà questo messaggio, solo per i tuoi nomi di dominio.
Congratulazioni! Hai abilitato correttamente https: // ww1.RANVIRSLOG.com e https: // ww2.RANVIRSLOG.com puoi visitare gli FQDN e notare che i siti Web ora hanno il segno del lucchetto che suggerisce che tutto è crittografato.
Guarda i file di configurazione
Se si visualizzano i file di configurazione che abbiamo creato in precedenza, vale a dire /etc /conf.d/ww1.conf e /etc /conf.d/ww2.Conf, noterai che tutte le regole "Ascolta 80" sono svanite e alcune nuove righe sono state aggiunte dicendo al server che la comunicazione deve essere crittografata e la posizione dei certificati e delle chiavi per eseguire il detto crittografia.
Consiglio vivamente di guardare attraverso i file di configurazione, poiché questo può anche insegnarti come installare correttamente i certificati e scrivere file di configurazione.
Rinnovo della certificazione
I certificati tipici di letSencrypt sono validi per 90 giorni e prima che scadano è necessario rinnovarli. È possibile utilizzare CERTBOT per fare prima l'esecuzione del rinnovo, eseguendo il comando:
$ sudo certbot rinnovato--sega
Se l'operazione ha successo vedrai il seguente messaggio:
Congratulazioni, tutti i rinnovi sono riusciti. I seguenti certificati sono stati rinnovati:
/etc/letsencrypt/live/ww1.RANVIRSLOG.com/fullchain.PEM (successo)
** Dry Run: simulazione di 'certbot rinnovare' vicino alla scadenza
** (I certificati di prova sopra non sono stati salvati.)
Ora puoi aggiungere un lavoro cron che tenterà il rinnovo ogni settimana o giù di lì. Certbot non rinnoverà i certificati a meno che non siano davvero dovuti, quindi non devi preoccuparti. Il comando per il rinnovo effettivo è:
$ certbot Renew
Aggiungilo al lavoro Cron di Root usando:
$ sudo crontab -e
Nel seguente prompt, seleziona il tuo editor preferito (scegli Nano se non sei sicuro) e aggiungi le seguenti righe alla fine del file ora aperto:
..
# Ad esempio, puoi eseguire un backup di tutti gli account utente
# alle 5 a.m ogni settimana con:
# 0 5 * * 1 tar -zcf/var/backups/home.TGZ /Home /
#
# Per ulteriori informazioni, consultare le pagine manuali di Crrontab (5) e Cron (8)
#
# M H Dom Mon Dow Comando
* 2 * * 2 certbot Renew
Questo eseguirà il comando di Renew di certbot alle 2 del mattino in qualsiasi momento casuale, il secondo giorno di ogni settimana.
Se sei nuovo nei certificati TLS, sperimentare cose come HSTS può essere rischioso. Poiché questi cambiamenti sono irreversibili. Tuttavia, se vuoi scendere nella tana del coniglio della sicurezza, posso vivamente consiglio al blog di Troy Hunt, che è una delle principali ispirazioni alla base di questo Write Up.