Installation
Les adresses IP ont donc changé depuis la dernière fois, car je recommence cette configuration. Voici les nouveaux ips et noms d'hôtes.
VM / Nom d'hôte | IP publique | IP privé | Rôle / fonction |
Reverser | 68.183.214.151 | dix.135.127.136 | Point de terminaison TLS et serveur proxy inversé |
web1 | N / A | dix.135.126.102 | Hébergement de la Seconde Guerre mondiale.ranvirslog.com site Web sur le port 80 http |
web2 | N / A | dix.135.126.187 | Hébergement WW2.ranvirslog.com site Web sur le port 80 http |
Les enregistrements DNS sont configurés comme tels les deux sites Web (différents sous-domaines) pointent vers la même IP publique statique. Il s'agit de l'adresse IP de notre proxy inversé Nginx:
Un enregistrement | Valeur |
WW1.ranvirslog.com | 68.183.214.151 |
WW2.ranvirslog.com | 68.183.214.151 |
Pour faire fonctionner notre DNS inversé sur HTTP non crypté, nous avons créé deux fichiers en / etc / conf.d / nommé WW1.conf et WW2.Conf chacun avec la configuration suivante:
/ etc / confr.d / ww1.confli
serveur
Écoutez 80;
Écoutez [::]: 80;
server_name ww1.ranvirslog.com;
emplacement /
proxy_pass http: // 10.135.126.102 /;
proxy_buffering off;
proxy_set_header x-real-ip $ Remote_addr;
/ etc / confr.d / ww2.confli
serveur
Écoutez 80;
Écoutez [::]: 80;
server_name ww2.ranvirslog.com;
emplacement /
proxy_pass http: // 10.135.126.187 /;
proxy_buffering off;
proxy_set_header x-real-ip $ Remote_addr;
Le système d'exploitation que nous utilisons est Ubuntu 18.04 LTS et nous avons supprimé Le fichier / etc / nginx / sites compatible / par défaut afin que nginx puisse agir uniquement comme un DNS inversé en utilisant les configurations illustrées ci-dessus.
Objectif
Avec le DNS inversé (et les sites Web backend) déjà opérationnels, notre objectif est d'installer un seul certificat TLS pour les deux FQDN (c'est-à-dire la Seconde Guerre mondiale.ranvirslog.com et ww2.ranvirslog.com) sur notre proxy inversé nginx.
Le trafic entre tout client et le proxy inversé va être crypté, mais le trafic entre le proxy inversé et les serveurs backend n'est pas crypté. Cependant, c'est encore une option infiniment plus sécurisée que de ne pas avoir du tout HTTPS. Pour les cas où le proxy inversé et les différents serveurs Web sont sur le même hôte, disons que si vous utilisez des conteneurs Docker pour héberger tout sur le même VPS, alors même ce trafic non crypté est contenu sur un seul hôte.
Installation de certificat
CERTBOT est un programme client qui s'exécutera sur notre serveur de proxy inversé et négociera un certificat TLS avec Letsencrypt. Il s'avérera à laisser le Cringpt que le serveur a en fait le contrôle des FQDN qu'il prétend avoir le contrôle. Nous ne nous inquiéterons pas de la façon dont CERTBOT le fait.
Traditionnellement, vous pouvez utiliser CERTBOT comme logiciel autonome qui obtiendra simplement les certificats (qui ne sont essentiellement que de longues clés cryptographiques) et l'enregistrer sur le serveur. Mais heureusement, pour la plupart des systèmes d'exploitation, il existe des plugins personnalisés pour Nginx, Apache et d'autres logiciels. Nous allons installer le certificat avec le plugin Nginx. Cela configurera automatiquement Nginx pour utiliser les touches nouvellement obtenues et se débarrasser des règles non sécurisées comme écouter HTTP sur le port 80.
Si vous utilisez des systèmes basés sur Debian, comme dans mon cas, j'utilise Ubuntu 18.04 LTS, alors l'installation est un jeu d'enfant.
$ sudo apt mise à jour
$ sudo apt installer logiciel-properties-commun
$ sudo add-att-repository univers
$ sudo add-att-repository ppa: Certbot / Certbot
$ sudo apt mise à jour
$ sudo apt installer python-certbot-nginx
D'autres systèmes d'exploitation, votre Redhat, Gentoo, Fedora peuvent suivre les instructions officielles comme indiqué ici.
Une fois que vous avez installé CERTBOT avec plugin Nginx Pour votre combinaison d'OS, nous pouvons nous rendre aux affaires.
Obtenir des certificats TLS
Pour obtenir le certificat TLS pour la première fois, exécutez la commande suivante:
$ sudo Certbot --nginx
Cela va traverser une série de questions interactives, comme indiqué ci-dessous:
Sauver le journal de débogage à / var / log / lesencrypt / letsencrypt.enregistrer
Plugins sélectionnés: Authenticatrice Nginx, installateur Nginx
Entrez l'adresse e-mail (utilisée pour les avis de renouvellement et de sécurité urgents) (entrez «C» pour annuler): John @ exmaple.com
Veuillez lire les conditions d'utilisation de https: // letSencrypt.org / documents / le-sa-v1.2-novembre-15-2017.pdf. Vous devez être d'accord afin de vous inscrire auprès du serveur ACME sur https: // acme-v02.API.Laissez-le.org / répertoire
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A) Gree / (c) ANCEL: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Seriez-vous prêt à partager votre adresse e-mail avec la Fondation Electronic Frontier, un partenaire fondateur du projet Let's Encrypt et de l'organisation à but non lucratif qui développe CERTBOT? Nous aimerions vous envoyer des e-mails sur notre travail Encryportant le Web, les nouvelles EFF, les campagnes et les moyens de soutenir la liberté numérique.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y) es / (n) o: y
Quels noms aimeriez-vous activer https pour?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: WW1.ranvirslog.com
2: WW2.ranvirslog.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sélectionnez les numéros appropriés séparés par des virgules et / ou des espaces, ou laissez l'entrée vide pour sélectionner toutes les options affichées (entrez 'C' pour annuler):
Veuillez choisir de rediriger ou non le trafic HTTP vers HTTPS, en supprimant l'accès HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Pas de redirection - ne modifiez pas d'autres modifications à la configuration du serveur Web.
2: Redirection - Faites toutes les demandes de redirection pour sécuriser l'accès HTTPS. Choisissez ceci pour les nouveaux sites, ou si vous êtes convaincu que votre site fonctionne sur HTTPS. Vous pouvez annuler ce changement en modifiant la configuration de votre serveur Web.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sélectionnez le numéro approprié [1-2] puis [entre] (appuyez sur «C» pour annuler): 2
Si tout s'est bien passé, il vous montrera ce message, juste pour vos noms de domaine à la place.
Toutes nos félicitations! Vous avez réussi à activer https: // ww1.ranvirslog.com et https: // ww2.ranvirslog.com Vous pouvez visiter les FQDN et remarquer que les sites Web ont maintenant le panneau de cadenas suggérant que tout est crypté.
Regardez les fichiers de configuration
Si vous affichez les fichiers de configuration que nous avons créés plus tôt, à savoir / etc / conf.d / ww1.conf et / etc / confoir.d / ww2.Conf, vous remarquerez que toutes les règles «Écouter 80» ont disparu et que quelques nouvelles lignes ont été ajoutées, indiquez que la communication doit être cryptée et l'emplacement des certificats et des clés pour effectuer ledit chiffrement.
Je recommande fortement de rechercher les fichiers de configuration, car cela peut également vous apprendre à installer correctement les certificats et à écrire des fichiers de configuration.
Renouvellement de certification
Les certificats typiques de LETSENCYPT sont valables pendant 90 jours et avant d'expirer, vous devez les renouveler. Vous pouvez utiliser CERTBOT pour d'abord exécuter le renouvellement, en exécutant la commande:
$ sudo Certbot Renew - rythme-run
Si l'opération réussit, vous verrez le message suivant:
Félicitations, tous les renouvellements ont réussi. Les certificats suivants ont été renouvelés:
/ etc / lesencrypt / live / ww1.ranvirslog.com / fullchain.pem (succès)
** Run sèche: simulant 'Certbot Renew' près de l'expiration du certificat
** (les certificats de test ci-dessus n'ont pas été enregistrés.)
Vous pouvez maintenant ajouter un travail cron qui tentera de renouveler chaque semaine environ. Certbot ne renouvellera pas les certificats à moins qu'ils ne soient vraiment dus pour cela, donc vous n'avez pas à vous inquiéter. La commande de renouvellement réel est:
$ certbot renouveler
Ajoutez-le au travail cron de Root en utilisant:
$ sudo crontab -e
Dans l'invite suivante, sélectionnez votre éditeur préféré (choisissez Nano si vous n'êtes pas sûr) et ajoutez les lignes suivantes à la fin du fichier maintenant ouvert:
…
# Par exemple, vous pouvez exécuter une sauvegarde de tous vos comptes d'utilisateurs
# à 5 A.m chaque semaine avec:
# 0 5 * * 1 Tar -zcf / var / Backups / Home.tgz / home /
#
# Pour plus d'informations, consultez les pages manuelles de Crontab (5) et Cron (8)
#
# m h Dom Mon Dow Commande
* 2 * * 2 CERTBOT RENNEY
Cela exécutera la commande de renouvellement de certificat à 2 heures du matin à n'importe quelle minute aléatoire, le deuxième jour de chaque semaine.
Si vous êtes nouveau sur les certificats TLS, expérimenter des choses comme HSTS peut être risqué. Puisque ces changements sont irréversibles. Cependant, si vous voulez descendre le terrier de la sécurité du lapin, je peux fortement recommander le blog de Troy Hunt qui est l'une des principales inspirations derrière cet article.