« Sécuriser ses sites avec letsencrypt et acme-tiny » : différence entre les versions

Aller à la navigation Aller à la recherche
 
(10 versions intermédiaires par le même utilisateur non affichées)
Ligne 23 : Ligne 23 :
=Pré-configuration (pour la première utilisation)=
=Pré-configuration (pour la première utilisation)=
Avant de générer les certificats, commencez par créer un utilisateur dédié qui se chargera de faire tourner le script.
Avant de générer les certificats, commencez par créer un utilisateur dédié qui se chargera de faire tourner le script.
Nous partirons sur un utilisateur nommé acme, avec un home dans /home/acme.
Nous partirons sur un utilisateur nommé acme, avec un home dans /home/acme et dont les mails sont redirigés vers root :
<pre>
adduser --disabled-login --disabled-password acme
echo "acme:  root" >> /etc/aliases
postalias /etc/aliases
</pre>


Avec cet utilisateur (su - acme) :
Avec cet utilisateur (su - acme) :
Ligne 55 : Ligne 60 :
mkdir /home/acme/work/networklab.fr
mkdir /home/acme/work/networklab.fr
chmod -R 750 /home/acme/work/
chmod -R 750 /home/acme/work/
chmod -x /home/acme/work/*/*
</pre>
</pre>
Ici pour le domaine networklab.fr, à adapter dans votre cas. On créé également un répertoire dédié au domaine dans work.
Ici pour le domaine networklab.fr, à adapter dans votre cas. On créé également un répertoire dédié au domaine dans work.
Ligne 89 : Ligne 95 :
<pre>
<pre>
<Directory "/home/networklab.fr/www/challenges">
<Directory "/home/networklab.fr/www/challenges">
    DirectoryIndex disabled
    Options -Indexes -FollowSymLinks
     AllowOverride None
     AllowOverride None
     Require all granted
     Require all granted
    Order allow,deny
</Directory>
    Allow from all
  </Directory>
Alias /.well-known/acme-challenge "/home/networklab.fr/www/challenges"
Alias /.well-known/acme-challenge "/home/networklab.fr/www/challenges"
</pre>
</pre>
Ligne 114 : Ligne 120 :
#! /bin/bash
#! /bin/bash
umask 022
umask 022
python /home/acme/acme-tiny/acme_tiny.py --account-key /home/acme/secrets/core_account.key --csr /home/acme/work/networklab.fr/networklab.fr.csr --acme-dir /home/networklab.fr/www/challenges/ > /home/acme/work/networklab.fr/networklab.fr.crt
python /home/acme/acme-tiny/acme_tiny.py --account-key /home/acme/secrets/account.key --csr /home/acme/work/networklab.fr/networklab.fr.csr --acme-dir /home/networklab.fr/www/challenges/ > /home/acme/work/networklab.fr/networklab.fr.crt
umask 027
umask 027
wget -O /home/acme/work/networklab.fr/intermediate.pem.new https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
wget -O /home/acme/work/networklab.fr/intermediate.pem.new https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
Ligne 125 : Ligne 131 :
fi
fi


openssl x509 -in /home/acme/work/networklab.fr/intermediate.pem.new &> /dev/null
openssl x509 -in /home/acme/work/networklab.fr/intermediate.pem.new -text -noout &> /dev/null
error=$?
error=$?
if [ ! $error == 0 ] ; then
if [ ! $error == 0 ] ; then
Ligne 133 : Ligne 139 :


#only done if no error
#only done if no error
cp /home/acme/work/networklab.fr/intermediate.pem.new /home/acme/work/networklab.fr/intermediate.pem
mv /home/acme/work/networklab.fr/intermediate.pem.new /home/acme/work/networklab.fr/intermediate.pem
cp /home/acme/work/networklab.fr/networklab.fr.crt /home/acme/work/networklab.fr/networklab.fr.pem
cp /home/acme/work/networklab.fr/networklab.fr.crt /home/acme/work/networklab.fr/networklab.fr.pem
chmod o-r /home/acme/work/networklab.fr/*
</pre>
</pre>
Le changement d'umask permet d'écrire le fichier de challenges avec des droits permettant à Apache de servir le fichier (le fichier étant créé en acme:acme, l'umask 027 ne le permet pas).
Le changement d'umask permet d'écrire le fichier de challenges avec des droits permettant à Apache de servir le fichier (le fichier étant créé en acme:acme, l'umask 027 ne le permet pas).
Ligne 168 : Ligne 175 :
         SSLCertificateFile /home/acme/work/networklab.fr/networklab.fr.pem
         SSLCertificateFile /home/acme/work/networklab.fr/networklab.fr.pem
         SSLCertificateKeyFile /home/acme/secrets/networklab.fr.key
         SSLCertificateKeyFile /home/acme/secrets/networklab.fr.key
        SSLProtocol all -SSLv2 -SSLv3 -TLSv1
        SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
        SSLHonorCipherOrder on
         Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
         Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
         Header always set X-Frame-Options DENY
         Header always set X-Frame-Options DENY
Ligne 180 : Ligne 184 :
On retrouve la configuration du certificat intermédiaire, du certificat de notre domaine et de la clé.
On retrouve la configuration du certificat intermédiaire, du certificat de notre domaine et de la clé.
Ensuite différentes configurations SSL, à adapter selon la date à laquelle vous lirez ce tuto.
Ensuite différentes configurations SSL, à adapter selon la date à laquelle vous lirez ce tuto.
Exemple de redirection automatique vers HTTPS :
<pre>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
</pre>
Vous noterez l'exemption qui est faite à <code>/.well-known/acme-challenge/</code> pour que letsencrypt vienne toujours vérifier les challenges en HTTP et éviter un blocage lié à un certificat expiré.


Dernière étape, configurer un reload d'Apache juste après la date prévue pour le renouvellement de vos certificats.
Dernière étape, configurer un reload d'Apache juste après la date prévue pour le renouvellement de vos certificats.
4 244

modifications

Menu de navigation