« Letsencrypt » : différence entre les versions

Aller à la navigation Aller à la recherche
6 000 octets ajoutés ,  il y a 9 ans
Ajout des informations nginx
(Letsencrypt - Création page)
 
(Ajout des informations nginx)
Ligne 8 : Ligne 8 :
Il y a bien un paquet Debian, mais il m'a posé des problèmes (de sombres histoires de dépendances python que je n'ai pas cherché à résoudre...).
Il y a bien un paquet Debian, mais il m'a posé des problèmes (de sombres histoires de dépendances python que je n'ai pas cherché à résoudre...).


{{Root|Text=apt-get install -s python-letsencrypt}}
<pre>
<pre>
# apt-get install -s python-letsencrypt
Lecture des listes de paquets... Fait
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Construction de l'arbre des dépendances       
Ligne 27 : Ligne 27 :


Sans parler d'un bug dans les dépendances:
Sans parler d'un bug dans les dépendances:
{{Root|Text=apt-listbugs list python-letsencrypt-apache}}
<pre>
<pre>
# apt-listbugs list python-letsencrypt-apache
Récupération des rapports de bogue… Fait
Récupération des rapports de bogue… Fait
Analyse des informations Trouvé/Corrigé… Fait
Analyse des informations Trouvé/Corrigé… Fait
Ligne 39 : Ligne 40 :
J'ai donc choisi de l'installer via les sources:
J'ai donc choisi de l'installer via les sources:


===Prérequis: activer et configurer le mod-proxy d'apache2:===
===Prérequis: activer et configurer le serveur web ===
 
====Si vous fonctionnez avec le mod-proxy d'apache2====


a2enmod proxy proxy_http
{{Root|Text=a2enmod proxy proxy_http <br />
$editeur /etc/apache2/mods-enabled/proxy.conf
$editeur /etc/apache2/mods-enabled/proxy.conf}}


J'ai choisi le port 9999, libre à vous d'en prendre un autre.
J'ai choisi le port 9999, libre à vous d'en prendre un autre.
<pre>
<pre>
   <IfModule mod_proxy.c>
   <IfModule mod_proxy.c>
Ligne 58 : Ligne 62 :
</pre>
</pre>


apache2ctl restart
{{Root|Text=apache2ctl restart}}
 
====Si vous fonctionnez avec Nginx====
 
La première chose à rajouter est l'écriture suivante, dans la section 'server' :
 
<pre>
location '/.well-known' {
        allow all;
}
location '/.well-known/acme-challenge' {
        allow all;
}
</pre>
 
Puis tester la config nginx et le recharger si ok :
 
{{Root|Text=nginx -t <br />
service nginx reload}}


===Installation:===
===Installation:===


# apt-get install git
{{Root|Text=apt-get install git <br />
# cd /opt && git clone https://github.com/letsencrypt/letsencrypt
cd /opt && git clone https://github.com/letsencrypt/letsencrypt}}


Les autres dépendances de letsencrypt seront installée à la génération de votre premier certificat
Les autres dépendances de letsencrypt seront installée à la génération de votre premier certificat
Ligne 69 : Ligne 91 :
===Premier lancement et création du premier certificat:===
===Premier lancement et création du premier certificat:===


'''Attention!''': Un DNS doit être configuré, et renvoyer sur votre serveur Web, sinon ça ne fonctionne pas. Il faut donc pré-configurer un vhost.
{{Warning2|Text=Un DNS doit être configuré, et renvoyer sur votre serveur Web, sinon ça ne fonctionne pas. Il faut configurer un vhost, et le faire pour chaque domaine et sous-domaine !}}


La commande magique:
La commande magique:


<pre>
{{Root|Text=cd /opt/letsencrypt/ && ./letsencrypt-auto --agree-tos --renew-by-default --standalone --standalone-supported-challenges http-01 --http-01-port 9999 --server https://acme-v01.api.letsencrypt.org/directory certonly -d domaine.tld}}
cd /opt/letsencrypt/ && ./letsencrypt-auto --agree-tos --renew-by-default --standalone --standalone-supported-challenges http-01 --http-01-port 9999 --server https://acme-v01.api.letsencrypt.org/directory certonly -d domaine.tld
</pre>


Il installera automatiquement les dépendance manquantes :


Il installera automatiquement les dépendance manquantes:
<pre>
<pre>
Bootstrapping dependencies for Debian-based OSes...
Bootstrapping dependencies for Debian-based OSes...
Ligne 101 : Ligne 121 :
</pre>
</pre>


# ls /etc/letsencrypt/live/domaine.tld
{{Root|Text=ls /etc/letsencrypt/live/domaine.tld <br />
cert.pem  chain.pem  fullchain.pem  privkey.pem
cert.pem  chain.pem  fullchain.pem  privkey.pem}}
 
===Configuration des certificats===
 
====Si vous fonctionnez avec Apache 2 :====
 
Éditez votre VHOST et faites pointer les certificats vers les bons fichiers :
 
<pre>
...
<VirtualHost xxx.xxx.xxx.xxx:443>
...
                <IfModule mod_ssl.c>
                SSLEngine on
                SSLProtocol All -SSLv2 -SSLv3
                SSLCertificateFile /etc/letsencrypt/live/votredomaine/fullchain.pem
                SSLCertificateKeyFile /etc/letsencrypt/live/votredomaine/privkey.pem
                SSLCACertificateFile /etc/letsencrypt/live/votredomaine/fullchain.pem
                </IfModule>
</pre>
 
Rechargez apache :
 
{{Root|Text=/etc/init.d/apache2 force-reload}}
 
====Si vous fonctionnez avec Nginx :====
 
=> Il faut modifier le contexte 'server' de votre domaine, pour modifier celui-ci, le mieux étant de le faire dans un fichier de config à part, puis de l'inclure dans votre contexte, tel que 'ssl.cfg' :
 
<pre>include /repertoire_vers_le_fichier_config_ssl/ssl.cfg;</pre>
 
{{Note2|Text=Pensez à virer la déclaration d'écoute sur le port 80 !}}
 
Fichier 'ssl.cfg' :
 
<pre>
listen 443 ssl spdy;
#listen [::]:443 ssl spdy; # si ipv6 actif, à décommenter !
 
spdy_headers_comp 9;
ssl on;
</pre>
 
{{Attention2|Text=Si votre version de nginx est >= 1.9.5, ne plus utiliser les déclarations 'spdy', mais 'http2' !}}
 
=> Ensuite, on va ajouter les autres déclarations liées à l'usage du protocole SSL :
 
Fichier 'ssl.cfg' :
 
<pre>
add_header Strict-Transport-Security "max-age=31536000; preload" always;
 
ssl_certificate /opt/letsencrypt/live/votre_domaine.tld/fullchain.pem;
ssl_certificate_key /opt/letsencrypt/live/votre_domaine.tld/privkey.pem;
ssl_trusted_certificate /opt/letsencrypt/live/votre_domaine.tld/chain.pem;
 
ssl_dhparam /etc/ssl/private/dhp_4096.pem;
 
#ssl_ecdh_curve chiffrement_edch_choisi;
 
ssl_prefer_server_ciphers on;
 
# Intermediate Mode
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:$
# Modern Mode
#ssl_protocols TLSv1.2;
#ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:EC$
# More secure Mode
#ssl_ciphers 'ECDH:DH:AES:!aNULL:!eNULL:!NULL:!DES:!3DES:!DSS:!EXPORT:!LOW:!MEDIUM:!PSK:!RC4:!SHA';
 
ssl_session_cache shared:SSL:10m;
 
ssl_session_tickets off;
#ssl_session_ticket_key /repertoire_vers_le_fichier_config_ticket_ssl/ticket.key;
ssl_session_timeout 24h;
 
ssl_stapling on;
ssl_stapling_verify on;
 
#resolver 127.0.0.1;
# resolvers FDN, OpenNIC
resolver 80.67.169.12 80.67.169.40 142.4.204.111 142.4.205.47 valid=300s;
# resolver ipv6 : FQDN
#resolver 2001:910:800::12 2001:910:800::40 valid=300s;
resolver_timeout 3s;
</pre>
 
'''Un peu d'explication ne fera pas de mal, non ?!'''
 
La première déclaration 'add_header' est lié à l'information HTTP STS qui demande au navigateur web de communiquer uniquement sur le protocole HTTPS, durant la période déclarée. La valeur '31536000' correspond à une année ... ''valeur qui peut, bien-sûr, être changée !''
 
Les trois autres premières déclarations sont liées aux certificats SSL créés ...
 
'''ssl_dhparam''': Si vous avez créée votre clé Diffie Hellman, c'est là qu'il faut lui indiquer où elle se trouve ...
Sinon, un petit code shell, tel que, devrait vous servir :
 
{{Root|Text=openssl dhparam -rand - 4096 -out "/repertoire_ou_vous_voulez/dh_4096.pem"; chmod 0400 /repertoire_ou_vous_voulez/dh_4096.pem}}
 
'''ssl_ecdh_curve''': est le chiffrement ECDHE choisi
''- à n'utiliser que si vous avez choisi de créer des clés ECDSA ... ce qui avec le client officiel ne peut pas être le cas, à ce jour ...''
 
'''ssl_protocols''': On bannit tous les anciens modes SSL, pour n'utiliser QUE les modes TLS. '''C'est un impératif de sécurité !'''
 
'''ssl_ciphers''': choisissez en décommettant l'un des modes en question ...
* le mode Intermediate est à utiliser si vous voulez que d'anciens navigateurs web puissent accéder à votre site en HTTPS.
* le mode Modern est à utiliser rien que pour les versions récentes de navigateurs web ...
* le mode "secure" refuse ABSOLUMENT certains chiffrements - c'est à ce jour, le plus sécurisé !
 
'''ssl_session_tickets''' et '''ssl_session_ticket_key''' sont à utiliser, si et seulement si, vous désirez l'usage des tickets SSL ... dans ce cas, il faut générer un ticket de chiffrement de session ssl, tel que :
 
{{Root|Text=openssl rand 48 > /repertoire_ou_vous_voulez/ticket.key; chmod 0400 /repertoire_ou_vous_voulez/ticket.key}}
 
ssl_stapling et ssl_stapling_verify sont liés au mode OCSP stapling est un mode particulier qui oblige vos clients navigateurs web à faire la vérification relative à la validité de votre certificat SSL/TLS à partir de votre serveur web. C'est votre serveur web qui interroge le serveur OCSP, met en cache l'information, et la restitue à vos clients ... à utiliser, de forte préférence ...
 
'''resolver''': ce sont les serveurs DNS à interroger !
 
----
 
Bon, toutes ces modifications ayant été faites, testez votre config nginx, puis relancez le service !


===Renouvellement===
===Renouvellement===
Ligne 109 : Ligne 248 :
La solution que j'ai choisi: crontab.
La solution que j'ai choisi: crontab.


# crontab -e
{{Root|Text=crontab -e}}
<pre>
<pre>
30 1 10 1,3,5,7,9,11 * cd /opt/letsencrypt/ && ./letsencrypt-auto --agree-tos --renew-by-default --standalone --standalone-supported-challenges http-01 --http-01-port 9999 --server https://acme-v01.api.letsencrypt.org/directory certonly -d domaine.tld
30 1 10 1,3,5,7,9,11 * cd /opt/letsencrypt/ && ./letsencrypt-auto --agree-tos --renew-by-default --standalone --standalone-supported-challenges http-01 --http-01-port 9999 --server https://acme-v01.api.letsencrypt.org/directory certonly -d domaine.tld
editor, reviewer
416

modifications

Menu de navigation