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

Aller à la navigation Aller à la recherche
(Page créée avec « Category:serveur Category:debian Les tutos [[Installation_et_configuration_d'un_serveur_http_apache_2.2|Installation et configuration d'un serveur http apache 2.2]... »)
 
(16 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[Category:serveur]]
[[Category:serveur]]
[[Category:debian]]
[[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.
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.


Ligne 22 : 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 53 : Ligne 59 :
chmod 600 /home/acme/secrets/networklab.fr.key
chmod 600 /home/acme/secrets/networklab.fr.key
mkdir /home/acme/work/networklab.fr
mkdir /home/acme/work/networklab.fr
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 59 : Ligne 67 :
Afin de demander votre certificat il est nécessaire de générer une demande de certificat.
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 :
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" > /home/acme/work/networklab.fr/networklab.fr.csr</pre>
<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) :
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")) > /home/acme/work/networklab.fr/networklab.fr.csr</pre>
<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/.
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/.
Ligne 84 : Ligne 95 :
<pre>
<pre>
<Directory "/home/networklab.fr/www/challenges">
<Directory "/home/networklab.fr/www/challenges">
     AllowOverride FileInfo AuthConfig Limit Indexes
     DirectoryIndex disabled
     Options Indexes FollowSymLinks MultiViews
     Options -Indexes -FollowSymLinks
     AllowOverride None
     AllowOverride None
     Order allow,deny
     Require all granted
    Allow from all
</Directory>
  </Directory>
Alias /.well-known/acme-challenge "/home/networklab.fr/www/challenges"
Alias /.well-known/acme-challenge "/home/networklab.fr/www/challenges"
</pre>
</pre>
Ligne 112 : Ligne 122 :
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
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 - https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > /home/acme/work/networklab.fr/intermediate.pem
wget -O /home/acme/work/networklab.fr/intermediate.pem.new https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
cat /home/acme/work/networklab.fr/networklab.fr.crt /home/acme/work/networklab.fr/intermediate.pem  > /home/acme/work/networklab.fr/networklab.fr.pem
 
openssl x509 -in /home/acme/work/networklab.fr/networklab.fr.crt -text -noout &> /dev/null
error=$?
if [ ! $error == 0 ] ; then
        echo "ERROR: ACME output is not a valid x509 certificate"
        exit 1
fi
 
openssl x509 -in /home/acme/work/networklab.fr/intermediate.pem.new -text -noout &> /dev/null
error=$?
if [ ! $error == 0 ] ; then
        echo "ERROR: intermediate.pem is not a valid x509 certificate"
        exit 1
fi
 
#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
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).
4 199

modifications

Menu de navigation