Comment utiliser Let's encrypt SSL Certificates pour les fermes HTTPS

Voir les catégories

Comment utiliser Let's encrypt SSL Certificates pour les fermes HTTPS

11 min de lecture

Vue d'ensemble #

Let's Encrypt est une autorité de certification ouverte et automatisée qui utilise le ACME (Environnement de gestion automatique des certificats) pour fournir des certificats TLS / SSL gratuits à tout client compatible. Ces certificats peuvent être utilisés pour chiffrer la communication entre les serveurs Web et les utilisateurs.

Ce didacticiel abordera brièvement les autorités de certification et comment RELIANOID l'intégration fonctionne avec Let's Encrypt, puis examinez comment RELIANOID utilise l' certbot (Client ACME) afin d'établir la communication avec l'infrastructure Let's encrypt.

RELIANOID Load Balancer 6.0.3 ou version supérieure inclut un petit wrapper certbot appelé permetencryptz Afin d’utiliser la fonctionnalité Web Racine de Certbot, les lignes suivantes expliquent le fonctionnement de ce wrapper. Veuillez tenir compte de tout cela pour le rendre opérationnel dans les environnements de production.

Comment fonctionne la validation Let's encrypt? #

En tant que brève description des fonctionnalités Webroot, le plugin Webroot fonctionne en créant un fichier temporaire pour chacun de vos domaines demandés dans le RELIANOID chemin du fichier /usr/local/relianoid/app/letsencryptz/webroot/.well-known/acme-challenge/. Ensuite, le serveur de validation Let's Encrypt effectue des requêtes HTTP pour valider que le DNS de chaque domaine demandé est résolu sur le serveur exécutant le wrapper letsencryptz et que le fichier temporaire à des fins de validation est accessible, le diagramme suivant décrit un exemple réel:

Chiffrons RELIANOID

Dans le diagramme précédent, RELIANOID L'équilibreur de charge se trouve derrière un routeur/pare-feu avec une adresse IP publique 185.79.20.147 (à titre d'exemple), le trafic HTTP et HTTPS est transféré à l'équilibreur de charge interne avec VIP 192.168.101.31 (à titre d'exemple), l'équilibreur de charge étant configuré avec différentes batteries 2:

Nom de la ferme HTTPS Hébergement Web via 192.168.101.31:443. Cette batterie de serveurs est responsable de l'offre d'hébergement Web. Différents serveurs Web sont également publiés sur Internet. Par exemple, test1.relianoid.com, test2.relianoid.com, test3.relianoid.com testons entre autres les pages Web publiées sur ce service virtuel.
Nom de la batterie HTTP WebhostingRedirect via 192.168.101.31:80. Cette batterie de serveurs est uniquement utilisée à des fins de redirection. Elle force tout le trafic de HTTP à HTTPS.

Le diagramme précédent décrit une demande de certificat SSL Let's Encrypt pour le domaine test1.relianoid.com comme suit:

1. Une demande de certificat est envoyée depuis l'équilibreur de charge lui-même vers l'infrastructure Let's Encrypt.
2. Let's encrypt détecte la nouvelle demande de certificat SSL pour test1.relianoid.com
3. Cryptons exécutons une résolution IP DNS pour l'hôte demandé: test1.relianoid.com vérifier que le résultat est l'adresse IP publique, la même adresse IP d'origine que celle qui a initié la demande.
4. À ce stade, Let's encrypt annonce permetencryptz script (webroot cerbot) nécessaire pour créer un fichier avec un HASH dans le chemin public http://test1.relianoid.com/.well-know/acme-challenge/ (Port TCP 80), répertoire local /usr/local/relianoid/app/letsencryptz/webroot/.well-known/acme-challenge/. Alors, permetencryptz configure un service temporel afin de rendre ce fichier accessible depuis Internet (la batterie de serveurs). WebhostingRedirect va être modifié à cet effet. S'il n'y a pas de batterie déjà configurée permetencryptz créera un temporel dans ce VIP et Port).
6. Aussitôt que permetencryptz confirme la création temporaire du service, permet aux serveurs d’Encrypt de vérifier que le fichier de validation temporel a été créé et HASH le contenu est correct.
7. Enfin, les serveurs Let's Encrypt répondent à la première requête avec le certificat déjà créé pour le Nom commun (CN) test1.relianoid.com.
8. RELIANOID stockera le certificat déjà créé dans le chemin local /usr/local/relianoid/config/ et il est prêt à être configuré dans la ferme Hébergement Web.

À ce stade, le nouveau certificat Let's Encrypt serait utilisé pour le service virtuel HTTPS.

Let's Encrypt Automation Commands #

Comme décrit, le permetencryptz script automatisera les actions requises pour gérer vos certificats SSL tels que créer, renouveler, détruire ou lister, entre autres. Retrouvez ci-dessous les commandes disponibles.

root@zva6k:~# Letsencryptz Description de Let's Encryptz : Let's Encryptz est un wrapper Let's Encrypt (certbot) avec des paramètres minimaux prêt à gérer les certificats Let's Encrypt pour les profils https Reliianoid. Tenez compte du fait que ce wrapper utilise la fonctionnalité webroot de certbot, donc l'architecture publique Let's encrypt nécessite de se connecter avec une adresse IP virtuelle et un port locaux (TCP 80 par défaut) afin d'effectuer une validation de demande pour le domaine demandé, donc dès que le " Le paramètre "obtain" est utilisé, ce script configurera une ferme HTTP à laquelle accédera Let's Encrypt à des fins de vérification, cette configuration est effectuée automatiquement par ce script lui-même, assurez-vous uniquement que l'IP virtuelle utilisée et le port HTTP 80 ne sont utilisés par aucun une autre ferme à charge équilibrée, et assurez-vous également que la résolution DNS du domaine demandé est accessible à partir du système let's encrypt.


utilisation : /usr/local/relianoid/bin/letsencryptz action : --obtenir | --détruire | --renouvellement | --liste | --listconf | --help --obtain : demandez de nouveaux certificats à l'aide du module webroot cert-bot.

		commandes : --vip --ferme --domaine --domaine --domaine --test --vip : L'IP virtuelle déjà configurée devait publier un serveur web temporel, celui-ci sera connecté par les serveurs publics let's encrypt pour vérifier la demande de certificat. L'adresse IP virtuelle doit être libre sur le port 80 afin d'être liée par un processus local. Si elle n'est pas gratuite, utilisez plutôt --farm.
        		--farm : Le nom de la ferme qui configure un service temporel appelé "letsencryptz", si aucune ferme n'est utilisée, une ferme temporelle appelée "letsencryptRelianoid" sera configurée dans l'IP virtuelle sélectionnée.
        		--domain : Le domaine pour lequel demande le certificat, c'est-à-dire www.monentreprise.com.
			--test : paramètre facultatif, s'il est utilisé, le certificat est demandé à des fins de test.

	--destroy : révoquer et supprimer le nom du certificat indiqué, l'action est rejetée si le certificat donné est utilisé par une ferme.
		
		commandes : --certname --certname : Nom du certificat, cette valeur peut être obtenue à partir de l'action --list.

	--renew : Renouveler les certificats proches de leur expiration, aucune commande n'est nécessaire. commandes : --test --forcerestart --vip --ferme --test : Paramètre optionnel, si utilisé un dry-run est exécuté, le renouvellement des certificats est simulé. 
			--forcerestart : paramètre facultatif, s'il est utilisé, les fermes qui utilisent les certificats renouvelés seront redémarrées afin d'appliquer les modifications.
                        --vip : L'IP virtuelle déjà configurée où publier un serveur Web temporel, celui-ci sera connecté par les serveurs publics let's encrypt pour vérifier le renouvellement du certificat. L'adresse IP virtuelle doit être libre sur le port 80 afin d'être liée par un processus local. Si elle n'est pas gratuite, utilisez plutôt --farm.
                        --farm : Le nom de la ferme qui configure un service temporel appelé "letsencryptz", si aucune ferme n'est utilisée, une ferme temporelle appelée "letsencryptRelainoid" sera configurée dans l'IP virtuelle sélectionnée.

	--list : Répertorie tous les certificats locaux gérés par let's encrypt ainsi que leur statut, aucune commande n'est nécessaire.

	--listconf : Lister lesRELIANOID


Cela prendra un certain temps la première fois que letsencryptz est exécuté car le système va installer automatiquement les dépendances non résolues, également un examen de la configuration est effectué avant de commencer à l'utiliser, Let's Encrypt demande un compte de messagerie ou des fins de contact liées aux certificats, ce compte de messagerie sera utilisé lors de toute action effectuée contre le système Let's Encrypt, cet e-mail peut être configuré dans le fichier de configuration principal /usr/local/relianoid/config/global.conf, directive $ le_email.

Quelques exemples d'utilisation sont présentés ci-dessous.

RELIANOID Création de certificat Let's Encrypt #

Cette commande demande un nouveau certificat pour le domaine. test2.relianoid.com. Tenez compte du fait que le VIP donné sera le VIP interne, dont le trafic doit être transféré de l'adresse IP publique à l'adresse IP interne. Si Let's Encrypt ne parvient pas à atteindre ce service, la demande sera refusée.

root@zva6k:~#letsencryptz --obtain --vip 192.168.101.31 --domain test2.relianoid.com AVERTISSEMENT : aucun nom de batterie de serveurs spécifié, une batterie de serveurs temporelle portant le nom listsencryptRelianoid sera créée dans le port VIP 192.168.101.31 80. Configuration de la batterie de serveurs pour encryptons la vérification du nom du certificat Obtention du certificat pour les domaines test2.relianoid.com... Enregistrement du journal de débogage dans /var/log/letsencrypt/letsencrypt.log Plugins sélectionnés : racine Web de l'authentificateur, programme d'installation Aucun Obtention d'un nouveau certificat Chemin(s) non standard ), peut ne pas fonctionner avec crontab installé par le gestionnaire de packages de votre système d'exploitation. Demande de certificat pour le(s) domaine(s) test2.relianoid.com OK. Nom du certificat créé test2.relianoid.com au format PEM prêt pour le profil HTTPS. Destruction de la configuration Webroot pour la ferme LetsencryptRelianoid. Suppression déjà de la configuration pour LetsencryptRelianoid, service Letsencryptz Redémarrage des fermes à l'aide de certificats renouvelés : 

RELIANOID Liste des certificats Let's Encrypt #

L'exécution de cette commande affichera les certificats actuels gérés par RELIANOID Chiffrons le système.

root@zva6k:~#letsencryptz --list Liste de tous les certificats disponibles pour la configuration actuelle dans le répertoire de configuration /usr/local/relianoid/config/letsencrypt/ Enregistrement du journal de débogage dans /var/log/letsencrypt/letsencrypt.log Nom du certificat : test1 Domaine(s) .relianoid.com : test1.relianoid.com Date d'expiration : 2019-09-19 10:48:02+00:00 (VALIDE : 77 jours) Fichier de certificat Pem : /usr/local/relianoid/config/ test1_relianoid_es.pem Nom du certificat : test3.relianoid.com Domaine(s) : test3.relianoid.com Date d'expiration : 2019-09-26 06:32:52+00:00 (VALIDE : 83 jours) Fichier de certificat Pem : /usr /local/relianoid/config/test3_relianoid_es.pem


Prendre en compte le terrain Nom du certificat, ce champ sera reconnu par l’encapsuleur letsencryptz comme –Certname.

RELIANOID Renouvellement du certificat Let's Encrypt #

La commande précédente vérifie si un certificat déjà généré nécessite un renouvellement, auquel cas le renouvellement sera effectué automatiquement. Notez que si le certificat renouvelé est en cours d'utilisation, un redémarrage de la ferme sera nécessaire pour appliquer le changement, veuillez utiliser l'option –Forcerestart si tu veux permetencryptz redémarre toutes les batteries de serveurs requises pour appliquer les modifications.

root@zva6k:~#letsencryptz --renew --vip 192.168.101.31 Renouvellement de tous les certificats requis Enregistrement du journal de débogage dans /var/log/letsencrypt/letsencrypt.log Le certificat n'est pas encore dû pour le renouvellement Le certificat n'est pas encore dû pour le renouvellement Le certificat n'est pas encore dû pour le renouvellement

RELIANOID Suppression du certificat Let's Encrypt #

Cette commande révoque et supprime le certificat donné. Si le système détecte que le certificat sélectionné est actuellement utilisé par une batterie de serveurs HTTPS, l'action sera rejetée. Dans l'exemple ci-dessus, l'action de suppression est rejetée car le certificat est utilisé par la batterie. testhttps.

root@zva6k:~#letsencryptz --destroy --certname test3.relianoid.com Révocation et suppression du ou des certificats test3.relianoid.com pour la configuration actuelle... Ce fichier ne peut pas être supprimé car il est utilisé par la ferme (s) : testerhttps

Dès que le certificat n'est plus attribué à la batterie, l'action sera effectuée:

root@zva6k:~#letsencryptz --destroy --certname test3.relianoid.com Révocation et suppression des certificats test3.relianoid.com pour la configuration actuelle... Enregistrement du journal de débogage dans /var/log/letsencrypt/letsencrypt. log Certificat(s) supprimé(s) test3.relianoid.com dans le chemin /usr/local/relianoid/config/test3_relianoid_es.pem

Migrer les certificats Let's Encrypt vers RELIANOID #

RELIANOID L'équilibreur de charge enregistre tous les fichiers de configuration de certbot dans le chemin local / usr / local / zevenet / config / letsencrypt /. Pour déplacer vos fichiers de configuration certbot existants (par défaut dans / etc / letsencrypt) d'un autre serveur pour RELIANOID, il vous suffit de faire une archive tar (fichier tar.gz) de ce répertoire de configuration existant sur votre serveur et de décompresser le contenu dans le RELIANOID Chiffrons le chemin de configuration. Enfin, pensez à modifier la variable $ le_email dans le fichier global.conf au même email que celui utilisé dans les requêtes précédentes.

Prise en charge du clustering de certificats Let's Encrypt #

RELIANOID Le plugin Let's Encrypt est totalement pris en charge avec RELIANOID Service de cluster. Toutes les actions Let's Encrypt sont enregistrées dans un fichier de configuration répliqué par le RELIANOID Cluster Service, donc toute action exécutée dans le MASTER noeud sera répliqué sur le ESCLAVE nœud automatiquement, mais toute action exécutée dans le ESCLAVE Le nœud lié à Let's Encrypt sera supprimé afin d'éviter toute désynchronisation.

Renouvellement automatique des certificats Let's Encrypt #

RELIANOID Le plugin Let's Encrypt peut être configuré afin de vérifier quotidiennement si un certificat a besoin d'être renouvelé, dans le cas où le système renouvelle automatiquement un certificat donné et qu'il est utilisé par une ferme, alors la ferme sera automatiquement redémarrée afin d'appliquer le certificat. changement.

Pour configurer le renouvellement automatique, procédez comme suit:

Créez le fichier cron suivant /etc/cron.d/letsencryptz avec le contenu suivant:

root@zva6k:~# cat /etc/cron.d/letsencryptz 00 00 * * * root /usr/local/relianoid/bin/letsencryptz --renew --forcerestart --vip 192.168.101.31

Avec cette configuration, le contrôle de renouvellement sera exécuté quotidiennement à 00h00 (minuit). Et le VIP 192.168.101.31 sera utilisé dans le port 80 à des fins de vérification à partir de Let's Encrypt System.

Références #

Certaines références utilisées dans cet article sont:

Webroot et Certbot
Comment fonctionne Let's Encrypt

📄 Téléchargez ce document au format PDF #

    E-MAIL: *

    Sécurité accrue. Efforts réduits. Succès durable. Meilleurs Docs