Déploiement de HTTPS (SSL) avec LetsEncrypt

Tous les utilisateurs chez csoft.net peuvent rendre leur domaines accessibles via https:// gratuitement grâce a Let's Encrypt. Ce guide montre comment installer vous-même un certificat Let's Encrypt sous votre compte Csoft. Si vous souhaitez que nous effectuions cette installation pour vous, veuillez contacter tech@csoft.net.

Information requise
  • La liste de vos nom(s) de domaine que vous voulez rendre accessibles par SSL. Les domaines doivent être actifs.
  • Une adresse courriel valide pour l'administrateur ou du webmestre. Utilisez tech@csoft.net si vous voulez que nous traitons toute communication en provenance de LetsEncrypt.
Créer un chemin /.well-known/ commun

Pour valider plus d'un domaine, il est nécessaire de créer un simple Alias HTTP afin que « /.well-known/ » corresponde au même répertoire pour tous vos domaines. Vous pouvez configurer cet Alias depuis csoftadm avec la commande:

  $ mkdir $HOME/www/.well-known
  $ csoftadm
  csoftadm> web alias add /.well-known/ /www/.well-known/
  csoftadm> web alias list

Un seul Alias est nécessaire car celui-ci s'appliquera à tous vos domaines. Assurez-vous de copier le chemin ci-dessus exactement (en substituant example.com pour le premier domaine dans votre liste de domaines). Toutes les barres obliques ("/") sont requises.

Important: Si un Alias créé ne fonctionne pas, assurez-vous que tous les composants du chemin d'accès sont de vrais répertoires et non des liens symboliques. Si l'un des composants du chemin d'accès se trouve être un lien symbolique («symlink»), alors l'alias ne fonctionnera pas.

Installer un certificat Lets's Encrypt

Exécutez les commandes suivantes dans votre shell pour créer votre répertoire ~/ssl/:

  $ mkdir -m 700 ~/ssl
  $ cd ~/ssl
  $ mkdir etc logs db

Finalement, exécutez la commande certbot pour envoyer la requête de certificat:

  $ certbot certonly --config-dir=$HOME/ssl/etc \
      --logs-dir=$HOME/ssl/logs \
      --work-dir=$HOME/ssl/db \
      --webroot -w $HOME/www \
      --cert-path $HOME/ssl/cert \
      -d example.com \
      -d www.example.com

Quand certbot s'exécute initialement, l'utilitaire demande interactivement l'adresse courriel de l'administrateur. L'option -d spécifiée plusieurs fois permet l'ajout de multiples certificats.

Finalement on doit copier le certificat vers ~/ssl/cert, et la clé privée vers ~/ssl/key:

  $ cp $HOME/ssl/etc/live/example.com/fullchain.pem $HOME/ssl/cert
  $ cp $HOME/ssl/etc/live/example.com/privkey.pem $HOME/ssl/key
  $ chmod 600 $HOME/ssl/key
Activation du service HTTPS

Utilisez le panneau de contrôle ou l'utilitaire csoftadm pour activer le service HTTPS avec l'option ssl.

  $ csoftadm
  csoftadm> conf set ssl yes

Cela peut prendre une minute avant que le serveur SSL démarre (sinon, voir /var/log/users/YOURNAME pour les messages d'erreurs). Désormais https://example.com et https://www.example.com devrait être accessibles.

Créer un Script d'Auto-Renouvellement

Pour plus de commodité, nous vous recommandons de créer un nouveau script sous ~/ssl/renew.sh, avec le contenu:

#!/bin/sh
#
# Renew my SSL certificate with LetsEncrypt.
#
DOMAIN=example.com

certbot certonly \
    --config-dir=$HOME/ssl/etc \
    --logs-dir=$HOME/ssl/logs \
    --work-dir=$HOME/ssl/db \
    --webroot -w $HOME/www \
    --cert-path $HOME/ssl/cert \
    -d $DOMAIN -d www.$DOMAIN \
    -d extra-domain1.com -d www.extra-domain1.com \
    -d extra-domain2.com -d www.extra-domain2.com \
    -d extra-domain3.com -d www.extra-domain3.com \

if [ "$?" == "0" ]; then
        cp -v $HOME/ssl/etc/live/$DOMAIN/fullchain.pem $HOME/ssl/cert
        cp -v $HOME/ssl/etc/live/$DOMAIN/privkey.pem $HOME/ssl/key
else
        echo "certbot failed"
        exit 1
fi
Auto-renouvellement du certificat

Vous pouvez ajouter une cron job pour renouveller le certificat automatiquement une fois par mois. Toute erreur sera envoyée à l'adresse MAILTO (qui devrait être indiquée au début de votre crontab).

  $ crontab -e

Ou, si vous voulez utiliser un éditeur spécifique:

  $ env EDITOR=nano crontab -e

Ajoutez les directives qui suivent:

  MAILTO=admin@example.com
  
  # Renew my SSL certificate monthly.
  @monthly (cd $HOME/ssl && sh renew.sh)
Solution de contournement si vous utilisez l'option "ssl-redirect"

Si vous utilisez l'option ssl-redirect (« rediriger tout le trafic HTTP vers HTTPS »), elle doit être désactivée avant d'exécuter certbot car le processus de vérification LetsEncrypt ne peut pas gérer les redirections.

  $ csoftadm -c "conf set ssl-redirect no"; sleep 180
  $ certbot certonly ...
  $ csoftadm -c "conf set ssl-redirect yes"

Votre commande crontab pour le renouvellement ressemblerait alors à:

  # Renew certificates monthly
  @monthly csoftadm -c "conf set ssl-redirect no"; sleep 180; (cd $HOME/ssl && sh renew.sh); csoftadm -c "conf set ssl-redirect yes"

Lors de cette écriture, nous travaillons sur une solution plus simple au niveau du serveur web.

Liens
  • Déploiement de SSL/HTTPS - La méthode manuelle (pour certificats commerciaux et auto-signés)
  • mod_ssl - Documentation d'Apache mod_ssl (pour utilisateurs de httpd dédié)
  • LibreSSL - Notre ensemble préféré de TLS/cryptographie

Csoft.net
© 2024 Communications CubeSoft
Tous Droits Réservés.