4 244
modifications
(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 | ||
</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/ | 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 | ||
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 | ||
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. |