admin:services:letsencrypt
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
admin:services:letsencrypt [2016/06/28 22:48] – [Mise en place de Let's Encrypt sur un serveur] zertrin | admin:services:letsencrypt [2020/04/27 17:03] – mise à jour zertrin | ||
---|---|---|---|
Ligne 9: | Ligne 9: | ||
En janvier 2016, la méthode officiellement recommandée pour installer Let's Encrypt consistait à cloner le dépôt officiel de letsencrypt et d' | En janvier 2016, la méthode officiellement recommandée pour installer Let's Encrypt consistait à cloner le dépôt officiel de letsencrypt et d' | ||
- | En mai 2016, suite à la disponibilité de paquets officiels dans les Backports de Jessie pour le client officiel Let's Encrypt renommé en certbot, il a été décidé de migrer sur la version packagée et en même temps de passer du plugin d'auth //apache// au plugin d'auth // | + | En mai 2016, suite à la disponibilité de paquets officiels dans les Backports de Jessie pour le client officiel Let's Encrypt renommé en '' |
Fin juin 2016 le cronjob livré avec certbot a été désactivé via // | Fin juin 2016 le cronjob livré avec certbot a été désactivé via // | ||
- | ==== Remarque sur le choix du client | + | ==== Remarque sur le choix du client |
Il existe aussi d' | Il existe aussi d' | ||
Après avoir pris en compte tout ceci, il fut décidé de s'en tenir //pour le moment// au client officiel, avec pour but de migrer vers une alternative plus adaptée une fois que la poussière sera retombée et qu'une meilleure alternative stable et viable se présentera. | Après avoir pris en compte tout ceci, il fut décidé de s'en tenir //pour le moment// au client officiel, avec pour but de migrer vers une alternative plus adaptée une fois que la poussière sera retombée et qu'une meilleure alternative stable et viable se présentera. | ||
+ | |||
+ | ==== Procédure d' | ||
+ | |||
+ | Le certbot a évolué depuis le début et il n'est plus nécessaire d' | ||
+ | |||
+ | On installera le certbot depuis les backports jessie ou les dépots stretch. | ||
+ | |||
+ | Il existe deux méthodes pour réaliser le challenge en HTTP : | ||
+ | | ||
+ | | ||
+ | |||
+ | Nous choisirons ici la deuxième méthode. | ||
+ | |||
+ | Pour un nginx la configuration à placer dans le vhost est la suivante : | ||
+ | |||
+ | location ^~ / | ||
+ | |||
+ | Il faut que le dossier existe (un coup de mkdir devrait suffire). Il doit appartenir à l' | ||
+ | |||
+ | Enfin, il faut mettre en place le cron de renouvellement des certificats s'il n'a pas été ajouté lors de l' | ||
+ | |||
+ | 0 */12 * * * root test -x / | ||
+ | |||
+ | On notera le renew hook qui permet de relancer les services si un nouveau certificat doit être pris en compte. On pourra faire un script pour le hook s'il n'est pas une commande courte et simple. | ||
+ | |||
+ | Tout est prêt pour générer le certificat :) | ||
+ | |||
+ | Il suffit de placer une commande du type : | ||
+ | |||
+ | certbot certonly --cert-name mon.certificat.tld --rsa-key-size 4096 \ | ||
+ | --email admin@federez.net --webroot -w / | ||
+ | |||
+ | |||
+ | La première fois on vous demandera de dire oui aux TOSS. Pour les test il faut apposer --dry-run. Il est obligatoire de faire des tests jusqu' | ||
+ | |||
+ | Si on veut étendre un certificat existant on peut placer un --extend et il faut mettre le même nom. | ||
+ | |||
+ | Pour avoir une idée de quels certificats sont existants un '' | ||
+ | |||
==== Vue d' | ==== Vue d' | ||
Ligne 32: | Ligne 71: | ||
* Un **script de monitoring des certificats SSL** est en place pour vérifier la durée de validité restante et alerter si le certificat s' | * Un **script de monitoring des certificats SSL** est en place pour vérifier la durée de validité restante et alerter si le certificat s' | ||
- | <WRAP center round alert> | + | <WRAP center round info > |
- | Pour le moment, **il faut absolument éviter de retirer un sous-domaine de la liste des domaines** après que le certificat ait été déjà émis. Lors du renouvellement une nouvelle " | + | Précédemment, il fallait |
- | Ceci est du au bug https:// | + | Ceci était |
- | Il est cependant possible d' | + | Il était |
- | Pour retirer | + | Désormais, il suffit que l' |
</ | </ | ||
Ligne 56: | Ligne 95: | ||
< | < | ||
- | apt-get install | + | apt-get install certbot |
</ | </ | ||
Ligne 63: | Ligne 102: | ||
< | < | ||
sudo dpkg-divert --add --rename --divert / | sudo dpkg-divert --add --rename --divert / | ||
+ | </ | ||
+ | |||
+ | On désactive aussi le service et le timer systemd qui viennent en doublon du fichier de cron : | ||
+ | < | ||
+ | systemctl stop certbot.service certbot.timer | ||
+ | systemctl disable certbot.service certbot.timer | ||
+ | systemctl mask certbot.service certbot.timer | ||
</ | </ | ||
Ligne 108: | Ligne 154: | ||
</ | </ | ||
- | Pour que tous les sous-domaines servis par apache soient en mesure | + | Pour éviter |
- | <file apache / | + | <file apache / |
- | < | + | < |
- | ProxyPass / | + | ServerAdmin webmaster@federez.net |
- | </ | + | ServerName hexagon.federez.net |
- | < | + | |
- | Alias / | + | RewriteEngine On |
- | </ | + | RewriteCond %{HTTPS} !=on |
- | < | + | |
- | | + | # Pas de redirection pour les requêtes de Let's Encrypt |
- | | + | RewriteCond %{REQUEST_URI} !^/ |
- | Require all granted | + | |
- | AddDefaultCharset off | + | # Redirection vers un domaine de federez.net |
- | </ | + | RewriteCond %{HTTP_HOST} ^([^.]+\.)? |
+ | RewriteRule ^.*$ https:// | ||
+ | |||
+ | | ||
+ | ProxyPass / | ||
+ | </ | ||
+ | |||
+ | | ||
+ | Alias / | ||
+ | </ | ||
+ | |||
+ | | ||
+ | AllowOverride None | ||
+ | Require all granted | ||
+ | # Utilité à confirmer : | ||
+ | # Options FollowSymLinks | ||
+ | # AddDefaultCharset off | ||
+ | </ | ||
+ | |||
+ | ErrorLog / | ||
+ | CustomLog / | ||
+ | LogLevel Warn | ||
+ | </ | ||
</ | </ | ||
- | On active la conf via '' | + | On s'assurera que le module |
- | Enfin, il faut s' | + | a2enmod rewrite |
- | Solution | + | Ensuite, il faut activer la configuration du site qui gère HTTP avec : |
- | Méthode bourrin (mais fonctionnelle) : dans sites-available un bon coup de sed fait passer la pilule | + | a2ensite 000-no-tls |
- | < | + | Enfin, on peut supprimer tous les VHOST HTTP pour ne laisser que les blocs qui concernent HTTPS dans les fichiers de configuration d'Apache. |
- | sed -i 's#Redirect permanent /# | + | |
- | </ | + | Notamment, |
+ | |||
+ | Puis on recharge la configuration d' | ||
+ | |||
+ | | ||
Astuce pour vérifier que tout est OK avant de tester avec Letsencrypt : | Astuce pour vérifier que tout est OK avant de tester avec Letsencrypt : | ||
Ligne 141: | Ligne 213: | ||
- Créer un fichier de test : '' | - Créer un fichier de test : '' | ||
- Depuis une autre machine, utiliser le oneliner suivant pour tester l' | - Depuis une autre machine, utiliser le oneliner suivant pour tester l' | ||
+ | - s' | ||
< | < | ||
Ligne 151: | Ligne 224: | ||
<WRAP left round important> | <WRAP left round important> | ||
- | **Attention**, | + | **Attention**, |
+ | * il faut uniquement lister les domaines qui pointent réellement sur ce serveur dans la config DNS | ||
+ | * il faut penser à recharger/ | ||
</ | </ | ||
Ligne 158: | Ligne 233: | ||
# ---------------------------------- | # ---------------------------------- | ||
- | # EXAMPLE POUR QUIGON.FEDEREZ.NET | + | # EXAMPLE POUR EXMAPLE.FEDEREZ.NET |
# À ADAPTER EN FONCTION DU SERVEUR | # À ADAPTER EN FONCTION DU SERVEUR | ||
# ---------------------------------- | # ---------------------------------- | ||
Ligne 167: | Ligne 242: | ||
PATH=/ | PATH=/ | ||
- | FULLCHAINPATH="/ | + | # remplacer avec le bon chemin, cf le --cert-name ci-dessous |
+ | FULLCHAINPATH="/ | ||
if [[ -e " | if [[ -e " | ||
Ligne 178: | Ligne 254: | ||
echo " | echo " | ||
- | # Pour le moment, il faut absolument éviter de retirer | + | # Bien s' |
- | # après | + | # De préférence mettre le meme nom que le premier domaine demandé, qui est de préférence |
- | # certificats sera créée ne se trouvant pas dans le dossier de destination attendu par les services. | + | |
- | # | + | |
- | # Ceci est du au bug https:// | + | |
- | # | + | |
- | # Il est cependant possible d' | + | |
- | / | + | / |
- | -d quigon.federez.net \ | + | --cert-name EXMAPLE.federez.net |
+ | -d EXMAPLE.federez.net \ | ||
-d ldap-ro.federez.net \ | -d ldap-ro.federez.net \ | ||
-d wiki-backup.federez.net \ | -d wiki-backup.federez.net \ | ||
-d git.federez.net \ | -d git.federez.net \ | ||
- | -t | + | --text |
NEWHASH_CERT=$(sha1sum $FULLCHAINPATH | cut -d" " -f 1) | NEWHASH_CERT=$(sha1sum $FULLCHAINPATH | cut -d" " -f 1) | ||
Ligne 217: | Ligne 289: | ||
echo " | echo " | ||
/ | / | ||
- | / | + | |
+ | # / | ||
+ | # / | ||
+ | # / | ||
fi | fi | ||
</ | </ | ||
Ligne 315: | Ligne 390: | ||
TLSProtocol | TLSProtocol | ||
TLSRequired | TLSRequired | ||
+ | </ | ||
+ | |||
+ | === Prosody === | ||
+ | |||
+ | Dans ''/ | ||
+ | |||
+ | < | ||
+ | ssl = { | ||
+ | key = "/ | ||
+ | certificate = "/ | ||
+ | } | ||
</ | </ | ||
admin/services/letsencrypt.txt · Dernière modification : 2020/06/17 18:23 de zertrin