Modifications

Sauter à la navigation Sauter à la recherche

Sécuriser ses sites avec letsencrypt et acme-tiny

941 octets ajoutés, 15 avril 2017 à 09:29
[[Category:serveur]]
[[Category:debian]]
[[Category:security]]
Les tutos [[Installation_et_configuration_d'un_serveur_http_apache_2.2|Installation et configuration d'un serveur http apache 2.2]] ainsi que [[Installation_et_configuration_de_OpenSSL|Installation et configuration de OpenSSL]] vous expliquent comment générer des certificats auto-signés et configurer vos vhosts Apache.
=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.
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 acmeecho "acme: root" >> /etc/aliasespostalias /etc/aliases</pre>
Avec cet utilisateur (su - acme) :
chmod 600 /home/acme/secrets/networklab.fr.key
mkdir /home/acme/work/networklab.fr
chmod -R 750 /home/acme/work/
chmod -x /home/acme/work/*/*
</pre>
Ici pour le domaine networklab.fr, à adapter dans votre cas. On créé également un répertoire dédié au domaine dans work.
Afin de demander votre certificat il est nécessaire de générer une demande de certificat.
Si vous n'avez qu'une adresse qui sera derrière votre certificat :
<pre>openssl req -new -sha256 -key /home/acme/secrets/networklab.fr.key -subj "/CN=networklab.fr" > -out /home/acme/work/networklab.fr/networklab.fr.csr</pre>
Mais plus généralement vous en aurez au moins deux (une avec et une sans le www) :
<pre>openssl req -new -sha256 -key /home/acme/secrets/networklab.fr.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:networklab.fr,DNS:www.networklab.fr")) -out /home/acme/work/networklab.fr/networklab.fr.csr</pre> Vous pouvez vérifier les différentes informations entrés dans le CSR avec la commande suivante :<pre> openssl req -in /home/acme/work/networklab.fr/networklab.fr.csr-noout -text</pre>
Avant de générer votre certificat, letsencrypt vient vérifier que votre site vous appartient bien. Pour cela le script va déposer un fichier de "challenge" à l'endroit que vous lui définissez et qui doit être accessible à l'adresse /.well-known/acme-challenge/.
<pre>
<Directory "/home/networklab.fr/www/challenges">
AllowOverride FileInfo AuthConfig Limit IndexesDirectoryIndex disabled Options -Indexes -FollowSymLinks MultiViews
AllowOverride None
Order allow,deny Allow from Require allgranted </Directory>
Alias /.well-known/acme-challenge "/home/networklab.fr/www/challenges"
</pre>
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
wget -O - /home/acme/work/networklab.fr/intermediate.pem.new https://letsencrypt.org/certs/lets-encrypt-x1x3-cross-signed.pem  openssl x509 -in /home/acme/work/networklab.fr/networklab.fr.crt -text -noout &> /dev/nullerror=$?if [ ! $error == 0 ] ; then echo "ERROR: ACME output is not a valid x509 certificate" exit 1fi openssl x509 -in /home/acme/work/networklab.fr/intermediate.pem.new -text -noout &> /dev/nullcat error=$?if [ ! $error == 0 ] ; then echo "ERROR: intermediate.pem is not a valid x509 certificate" exit 1fi #only done if no errormv /home/acme/work/networklab.fr/intermediate.pem.new /home/acme/work/networklab.fr/intermediate.crt pemcp /home/acme/work/networklab.fr/intermediatenetworklab.fr.pem > crt /home/acme/work/networklab.fr/networklab.fr.pemchmod o-r /home/acme/work/networklab.fr/*
</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).
3 052

modifications

Menu de navigation