Letsencrypt certificat SSL gratuit

Partagez ici vos Trucs et vos Astuces.
Répondre
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5048
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Salut,

La page du Wiki concernant ce T&A => Letsencrypt

Je l'utilise depuis plus d'un mois maintenant, et je suis n'ai pas trouvé quoi que ce soit à redire sur ce soft, et les service qu'il offre:
Créer votre certificat SSL, que ce soit pour votre domaine ou votre sous-domaine, simplement et gratuitement... Que demander de plus ? :003:
Le tuto ci-dessous est pour une Jessie avec Apache2. Évidemment c'est possible avec Nginx, mais je n'en ai pas sous la main pour configurer le mod-proxy.
S'il y a un volontaire qu'il se manifeste...

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...).

Code : Tout sélectionner

# apt-get install -s python-letsencrypt
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Certains paquets ne peuvent être installés. Ceci peut signifier
que vous avez demandé l'impossible, ou bien, si vous utilisez
la distribution unstable, que certains paquets n'ont pas encore
été créés ou ne sont pas sortis d'Incoming.
L'information suivante devrait vous aider à résoudre la situation : 

Les paquets suivants contiennent des dépendances non satisfaites :
 python-letsencrypt : Dépend: python-acme (>= 0.4.1) mais ne sera pas installé
                      Dépend: python-cryptography (>= 0.7) mais 0.6.1-1 devra être installé
                      Recommande: letsencrypt mais ne sera pas installé
E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ».
Sans parler d'un bug dans les dépendances:

Code : Tout sélectionner

# apt-listbugs list python-letsencrypt-apache
Récupération des rapports de bogue… Fait
Analyse des informations Trouvé/Corrigé… Fait
bogues de gravité serious sur python-letsencrypt-apache (→ ) <Résolus dans une version donnée>
 b1 - #818696 - Fails to build twice - clean does not clean enough (Corrigé : python-letsencrypt-apache/0.5.0-1)
Résumé :
 python-letsencrypt-apache(1 bogue)
J'ai donc choisi de l'installer via les sources:

1) Prérequis: activer et configurer le serveur Web:

SI vous êtes sur APACHE2:

Code : Tout sélectionner

a2enmod proxy proxy_http

Code : Tout sélectionner

$editeur /etc/apache2/mods-enabled/proxy.conf
J'ai choisi le port 9999, libre à vous d'en prendre un autre.

Code : Tout sélectionner

  <IfModule mod_proxy.c>
      ProxyPass "/.well-known/acme-challenge/" "http://127.0.0.1:9999/.well-known/acme-challenge/" retry=1
      ProxyPassReverse "/.well-known/acme-challenge/" "http://127.0.0.1:9999/.well-known/acme-challenge/"
      <Location "/.well-known/acme-challenge/">
          ProxyPreserveHost On
          Order allow,deny
          Allow from all
          Require all granted
      </Location>
  </IfModule>

Code : Tout sélectionner

apache2ctl restart
Si vous êtes sur NGINX:

La première chose à rajouter est l'écriture suivante, dans la section 'server' :

Code : Tout sélectionner

location '/.well-known' {
        allow all;
}
location '/.well-known/acme-challenge' {
        allow all;
}
Puis tester la config nginx et le recharger si ok :

Code : Tout sélectionner

nginx -t
service nginx reload
2) Installation:

Code : Tout sélectionner

# apt-get install git
# 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

3) 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.

La commande magique:

Code : Tout sélectionner

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
Si vous avez des sous-domaines, c'est le moment d'y penser: Intégrez tous vos domaines et sous-domaines (y comprit le www) dans votre certificat.
Ainsi il sera valide pour tous vos vhosts.

Code : Tout sélectionner

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 -d www.domaine.tld -d truc.domaine.tld -d bidule.domaine.tld -d machin.domaine.tld -d etc.domaine.tld
Mettez en premier le domaine "maître" pour retrouver facilement le certificate dans /etc/letsencrypt/live.

Il installera automatiquement les dépendance manquantes:

Code : Tout sélectionner

Bootstrapping dependencies for Debian-based OSes...
...
Les NOUVEAUX paquets suivants seront installés :
  augeas-lenses cpp cpp-4.9 dh-python dialog gcc gcc-4.9 libasan1 libatomic1 libaugeas0 libc-dev-bin libc6-dev libcilkrts5 libcloog-isl4 libexpat1-dev
  libffi-dev libgcc-4.9-dev libisl10 libitm1 liblsan0 libmpc3 libmpdec2 libmpfr4 libpython-dev libpython2.7-dev libpython3-stdlib libpython3.4-minimal
  libpython3.4-stdlib libssl-dev libtsan0 libubsan0 linux-libc-dev python-chardet-whl python-colorama-whl python-dev python-distlib-whl
  python-html5lib-whl python-pip-whl python-pkg-resources python-requests-whl python-setuptools-whl python-six-whl python-urllib3-whl python-virtualenv
  python2.7-dev python3 python3-minimal python3-pkg-resources python3-virtualenv python3.4 python3.4-minimal virtualenv zlib1g-dev
...
Vous demandera un mail de contact
Et finalement vous créera un joli certificat!

Code : Tout sélectionner

- Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/domaine.tld/fullchain.pem. Your
   cert will expire on 2016-07-18. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.

Code : Tout sélectionner

# ls /etc/letsencrypt/live/domaine.tld
cert.pem  chain.pem  fullchain.pem  privkey.pem
4) configuration certificats:

Si vous êtes sur APACHE2:

Editez votre VHOST et faites pointer les certificats vers les bons fichiers:

Code : Tout sélectionner

...
<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>
Et rechargez apache:

Code : Tout sélectionner

/etc/init.d/apache2 force-reload
Si vous êtes sur NGINX:

Donc, 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' :

Contexte 'server':

Code : Tout sélectionner

include /repertoire_vers_le_fichier_config_ssl/ssl.cfg;
Pensez à virer la déclaration d'écoute sur le port 80

Fichier 'ssl.cfg'

Code : Tout sélectionner

listen 443 ssl spdy;
#listen [::]:443 ssl spdy; # si ipv6 actif, à décommenter !

spdy_headers_comp 9;
ssl on;
On écoute sur le port 443 ...
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'

Code : Tout sélectionner

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;
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 :

Code : Tout sélectionner

openssl dhparam -rand - 4096 -out "/repertoire_ou_vous_voulez/dh_4096.pem"; chmod 0400 /repertoire_ou_vous_voulez/dh_4096.pem
[/i]

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écommentant 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 :

Code : Tout sélectionner

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 !

----

Modifications nginx autres !

Oui, mais moi, je veux rediriger de HTTP, VERS HTTPS !

Pas trop difficile, avant votre déclaration de contexte 'server', il faut en créer une autre, tel que :

Code : Tout sélectionner

server {
    
    listen 80;
    listen [::]:80;

    server_name votre_nom_domaine;

    return 301 https://$host$request_uri;
}
5) Renouvellement:

Comme précisé dans le message de félicitation, votre certificat n'est valide que pour 3 mois... Il faut donc tout de suite se couvrir et prévoir le renouvellement.
La solution que j'ai choisi: crontab.

Code : Tout sélectionner

crontab -e

Code : Tout sélectionner

 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
Afin de ne pas casser vos configuration à chaque renouvellement, je vous conseille de mettre des liens symbolique de vos certificats vers les certificates qui se trouvent dans /etc/letsencrypt/live.
Pour un serveur apache2 par exemple:

Code : Tout sélectionner

mv /etc/ssl/certs/domaine.tld.pem /etc/ssl/certs/domaine.tld.pem.bak
mv /etc/ssl/private/domaine.tld.key /etc/ssl/private/domaine.tld.key.bak
ln -s /etc/letsencrypt/live/domaine.tld/fullchain.pem /etc/ssl/certs/domaine.tld.pem
ln -s /etc/letsencrypt/live/domaine.tld/privkey.pem /etc/ssl/private/domaine.tld.key
Voilà! Je repasserais sûrement dans ce T&A au fur et à mesure de vos commentaires, et j'ai prévu une page (plus complète) sur le wiki =>Letsencrypt
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

lol, c'est une bonne initiative ... que j'aimerais qu'on modifie pour intégrer certaines modifications ... dans le cas d'usage du serveur nginx.
En effet, mes tests se sont effectués sur cette base.

Donc, je peux te "renseigner" sur les modif, si tu es d'accord ! :p

Pour le paquet debian, la première fois que j'ai cherché à l'installer, j'ai eu ce soucis aussi ... j'ai attendu quelques jours, puis j'ai tenté à nouveau avec succès.

----
J'ai même un projet écrit en bash, pour me "faciliter la vie" : https://framagit.org/hucste/Hostme
(pour y avoir accès, faut y être enregistré car je ne publie pas pour tout le monde, du moins pas encore)
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5048
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Salut,
PengouinPdt a écrit :Donc, je peux te "renseigner" sur les modif, si tu es d'accord ! :p
Avec grand plaisir! :023:

Donne tes trucs on complétera le post initial et on mettra à jour le Wiki.
On peut proposer les deux méthodes (Debian classique avec apt-get et installation via les sources - En précisant que l'installation via apt-get est plus "propre" et plus respectueuse du système).
Et bien sur la partie Nginx est la bienvenue!

:006:
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
Arnaud
Membre
Membre
Messages : 162
Inscription : 23 avr. 2016, 14:31
Localisation : Allemagne
Status : Hors-ligne

De mémoire, il faut juste installer les paquets python recommandés, et ça tourne ( testé sur deux serveurs sous jessie ).
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Alors, la configuration pour nginx ... avec des droits admins :

Modification nginx server :

La première chose à rajouter est l'écriture suivante, dans la section 'server' :

Code : Tout sélectionner

location '/.well-known' {
        allow all;
}
location '/.well-known/acme-challenge' {
        allow all;
}
Puis tester la config nginx et le recharger si ok :

Code : Tout sélectionner

nginx -t
service nginx reload
Configuration Let's Encrypt :

Comme on est avec nginx, on préférera l'usage de LE par le mode webroot ce qui a l'avantage de ne pas avoir à arrêté le serveur web !

Dans un premier temps, on se crée un fichier de configuration lié à LE, tel que :

Code : Tout sélectionner

# Prefer to use a 4096 bit RSA key instead of 2048
rsa-key-size = 4096

email = $email
domains = $domains

authenticator = webroot

# This is the webroot directory of your domain in which
# letsencrypt will write a hash in /.well-known/acme-challenge directory.

webroot-path = /repertoire_racine_site_web/
Vous nommez comme vous le voulez, mais pour le propos, on le nommera 'LetsEncrypt.cfg.ini', et vous le mettez où vous voulez :

Description du fichier :
rsa-key-size: la force du chiffrement désirée.
À savoir, avec le projet officiel, il n'est pas possible d'utiliser des clés plus fortes que 4096 bits. Pour information, il existe des clients ACME, capables d'interroger les serveurs LE, qui permettent l'usage de clé RSA à 8192, voire mieux des clés ECDSA ...

email: votre email de contact lié au domaine web

domains: le(s) domaine(s), voire sous-domaine(s) désirés
À savoir l'usage du wilcard '*' n'est pas pris en charge ... de plus, si vous voulez déclarez un sous-domaine, il est impératif que votre serveur DNS le gére, même dans le cas de l'usage du préfixe 'www' !

authenticator: est le mode d'authentification auprès de LE - laissez tel quel !

webroot-path: est la racine web de votre site web !!!
Très important à ne pas se tromper de répertoire ... sinon, les serveurs LE ne pourront pas dialoguer avec votre serveur correctement et vous avertiront d'un problème de droit - c'est une des premières choses à vérifier si la création des certificats LE vous répond en ce sens.

Génération des certificats Let's Encrypt :

Pour générer les certificats, c'est très simple :

Code : Tout sélectionner

/opt/letsencrypt/letsencrypt-auto certonly --agree-tos --config "/repertoire_vers_fichier_config_LE/LetsEncrypt.cfg.ini"
Si vous avez le message de "Congratulations", vous pouvez passer à la modification du vhost nginx relative à votre domaine !

Modification nginx :

Donc, 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' :

Contexte 'server':

Code : Tout sélectionner

include /repertoire_vers_le_fichier_config_ssl/ssl.cfg;
Pensez à virer la déclaration d'écoute sur le port 80

Fichier 'ssl.cfg'

Code : Tout sélectionner

listen 443 ssl spdy;
#listen [::]:443 ssl spdy; # si ipv6 actif, à décommenter !

spdy_headers_comp 9;
ssl on;
On écoute sur le port 443 ...
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'

Code : Tout sélectionner

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;
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 :

Code : Tout sélectionner

openssl dhparam -rand - 4096 -out "/repertoire_ou_vous_voulez/dh_4096.pem"; chmod 0400 /repertoire_ou_vous_voulez/dh_4096.pem
[/i]

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écommentant 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 :

Code : Tout sélectionner

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 !

----

Modifications nginx autres !

Oui, mais moi, je veux rediriger de HTTP, VERS HTTPS !

Pas trop difficile, avant votre déclaration de contexte 'server', il faut en créer une autre, tel que :

Code : Tout sélectionner

server {
    
    listen 80;
    listen [::]:80;

    server_name votre_nom_domaine;

    return 301 https://$host$request_uri;
}
----

@lol: comme tu vois j'en ai mis bien plus ... bref, tout ce qui m'a semblé nécessaire ... et, entres autres sur le rappel à la configuration SSL - que tu n'as pas informé dans ton cas pour Apache -, de la génération de la clé DH, etc ...
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5048
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

PengouinPdt a écrit :Pour le paquet debian, la première fois que j'ai cherché à l'installer, j'ai eu ce soucis aussi ... j'ai attendu quelques jours, puis j'ai tenté à nouveau avec succès.
Arnaud a écrit :De mémoire, il faut juste installer les paquets python recommandés, et ça tourne ( testé sur deux serveurs sous jessie ).
Salut,
Ça m'intéresse d'avoir vos retour si possible documentés sur la question...
Parce que je vois pas comment installer letsencrypt proprement sur une stable:

Code : Tout sélectionner

root@mail:~# apt-get install -s letsencrypt
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
E: Impossible de trouver le paquet letsencrypt
root@mail:~# apt-cache policy letsencrypt
N: Impossible de trouver le paquet letsencrypt
Ajout des backports:

Code : Tout sélectionner

# apt-cache policy letsencrypt
letsencrypt:
  Installé : (aucun)
  Candidat : 0.5.0-1~bpo8+1
 Table de version :
     0.5.0-1~bpo8+1 0
        100 http://debian.mirrors.ovh.net/debian/ jessie-backports/main amd64 Packages
Il n'y a qu'en "forçant" les backports que ça passe:

Code : Tout sélectionner

# apt-get install -t jessie-backports letsencrypt
Mais là encore c'est la mouise...

Code : Tout sélectionner

bogues de gravité grave sur python-mock (→ 1.3.0-2.1~bpo8+1) <Résolus dans une version donnée>
 b1 - #794461 - RequirementParseError: Expected version spec in funcsigs; python_version<"3.3" at ; python_version<"3.3" (Corrigé : python-mock/1.3.0-2.1)
bogues de gravité grave sur letsencrypt (→ 0.5.0-1~bpo8+1) <Résolus dans une version donnée>
 b2 - #820721 - won't install (Corrigé : python-letsencrypt/0.5.0-1)
Résumé :
 python-mock(1 bogue), letsencrypt(1 bogue)
Bug réglé sur letsencrypt - Corrigé : python-letsencrypt/0.5.0-1

Code : Tout sélectionner

# apt-cache policy letsencrypt
letsencrypt:
  Installé : (aucun)
  Candidat : 0.5.0-1~bpo8+1
Mais pas sur python-mock - Corrigé : python-mock/1.3.0-2.1

Code : Tout sélectionner

# apt-cache policy python-mock
python-mock:
  Installé : (aucun)
  Candidat : 1.0.1-3
Donc soit vous êtes passés outre le bug sur python-mock, soit vous êtes des magiciens... :002:
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5048
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Premier post mit à jour avec les infos sur NGINX fournies par PengouinPdt.
Merci à toi! :good:
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Ahhhh... enfin ! :p
Je vais vérifier que tu n'aies pas écrit, trop de bêtises :D
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Je rajoute un modulo qui me semble pertinent, et important !

Au paragraphe : "Si vous avez des sous-domaines, c'est le moment d'y penser ...", ou celui le précédent, stp, sois plus clair concernant l'impératif ... où il faut absolument que tous domaines, et ses sous-domaines soient impérativement configurés, en répondant au niveau serveur DNS, et en termes de vhosts ...
Dans le paragraphe correspondant, ce n'est pas assez clair ce point là ;)
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

N'oubliez pas certbot qui est un outil vraiment pratique. Il fait tout à votre place : https://letsencrypt.org/getting-started/
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5048
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

PengouinPdt a écrit :Je rajoute un modulo qui me semble pertinent, et important !

Au paragraphe : "Si vous avez des sous-domaines, c'est le moment d'y penser ...", ou celui le précédent, stp, sois plus clair concernant l'impératif ... où il faut absolument que tous domaines, et ses sous-domaines soient impérativement configurés, en répondant au niveau serveur DNS, et en termes de vhosts ...
Dans le paragraphe correspondant, ce n'est pas assez clair ce point là ;)
Ok, je regarde ça demain si j'ai un peu de temps.
Dunatotatos a écrit :N'oubliez pas certbot qui est un outil vraiment pratique. Il fait tout à votre place : https://letsencrypt.org/getting-started/
Tu peux en dire plus svp ? Je suis un peu fainéant...
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

Dunatotatos a écrit :N'oubliez pas certbot qui est un outil vraiment pratique. Il fait tout à votre place : https://letsencrypt.org/getting-started/
C'est le nouveau nom du client officiel letsencrypt !!!
Ils ont changé le nom, et le dépôt git :p
(géré officiellement par la EFF !)

@Dunatotatos: Merci :D
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

lol a écrit :Tu peux en dire plus svp ? Je suis un peu fainéant...
La doc précédemment citée sera certainement plus complète que ce que je vais raconter ici. Mais pour faire court, j'utilise certbot ainsi :
J'arrête les services qui écoutent sur les ports 80 et 443 (Apache et OpenVPN), puis je lance certbot avec l;a commande
certbot certonly --standalone -d example.com -d www.example.com
Puis je relance les services.
La totalité prend 20s. C'est raisonnable comme interruption de service.

Les options proposées sont aussi très intéressantes. Si Apache tourne et qu'on ne veut pas l'interrompre,
certbot --apache
crée et installe les certificats.

certbot renew
renouvelle la totalité des certificats générés.

Il y en a pas mal d'autres, mais ça ne sert à rien que je liste tout ici.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

@Dunatotatos : fais la même chose avec l'option '--webroot' au lieu de '--standalone' ... comme ça, tu n'arrêteras même pas ton service web ! ;)

Pour le renew, il est recommandable de faire d'abord : renew --dry-run ... histoire d'être sûr que le renouvellement se passera bien !
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5048
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

PengouinPdt a écrit :@Dunatotatos : fais la même chose avec l'option '--webroot' au lieu de '--standalone' ... comme ça, tu n'arrêteras même pas ton service web ! ;)

Pour le renew, il est recommandable de faire d'abord : renew --dry-run ... histoire d'être sûr que le renouvellement se passera bien !
Je vais faire des essais avec l'option --webroot.
Y'a un truc que je ne comprend pas: Même avec l'option --standalone je n'arrête pas mon serveur apache... Pourquoi devez-vous arrêter le service ?

Pour le renew, le --dry-run dans le crontab n'est pas très pratique... :003:
Il faudrait plutôt penser à un script qui avertisse l'utilisateur de l'échec (éventuellement de la réussite) du renouvellement.
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Personnellement, je génère des certificats seulement pour des connexions à mon serveur mail. Je n'ai pas de site web, donc pas de webroot. Je préfère arrêter openvpn que configurer Apache ^^ Si on ne configure pas les webroots, certbot lance un service qui écoute sur les ports 80 et 443. D'où la nécessité d'arrêter Apache.
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5048
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Dunatotatos a écrit :Personnellement, je génère des certificats seulement pour des connexions à mon serveur mail. Je n'ai pas de site web, donc pas de webroot. Je préfère arrêter openvpn que configurer Apache ^^ Si on ne configure pas les webroots, certbot lance un service qui écoute sur les ports 80 et 443. D'où la nécessité d'arrêter Apache.
Avec le mod proxy pas besoin d'arrêter apache ou Nginx justement. Mais si tu n'as aucun site en prod aucune raison de s'emmerder évidemment.

J'ai besoin des certificats pour une utilisation assez large:
- Sites Web
- Postfix/Dovecot
- PhpMyadmin
- Webmin
- Ejabberd
- Serveur FTP

J'ajouterais d'ailleurs au wiki la mise en place des certs pour ces services (quand la partie NGINX sera en place... :006: ).

J'ai du mal à comprendre l'utilité de certbot.
La façon dont je procède est déjà en partie "automatisée" une fois les certificats en place:
- Création des certs
- Liens symboliques depuis les certificats déjà en place vers /etc/letsencrypt/live/domaine/*
- Création de la tâche cron qui va relancer régulièrement le renouvellement.

Quel avantage est-ce que je tire de passer à certbot ?
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

lol a écrit :(...)
J'ajouterais d'ailleurs au wiki la mise en place des certs pour ces services (quand la partie NGINX sera en place... :006: ).
Rohhh, y'a de l'appel dans le coin ... :p
Promis, je le fais dès que possible - là, je suis en mode grave dev sur mon projet python pixup ;)
lol a écrit :(...)
Quel avantage est-ce que je tire de passer à certbot ?
La question est : Comment tu fais exactement à l'heure actuelle ? Tu te sers de quel client ?
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5048
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

PengouinPdt a écrit :
lol a écrit :(...)
J'ajouterais d'ailleurs au wiki la mise en place des certs pour ces services (quand la partie NGINX sera en place... :006: ).
Rohhh, y'a de l'appel dans le coin ... :p
Promis, je le fais dès que possible - là, je suis en mode grave dev sur mon projet python pixup ;)
Oui, je sais être lourdaud aussi... :005:
PengouinPdt a écrit :
lol a écrit :(...)
Quel avantage est-ce que je tire de passer à certbot ?
La question est : Comment tu fais exactement à l'heure actuelle ? Tu te sers de quel client ?
Ben... c'est dans mon premier post: letsencrypt compilé.
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
PengouinPdt
Contributeur
Contributeur
Messages : 1343
Inscription : 23 avr. 2016, 23:37
Localisation : 47/FR
Diaspora* : https://framasphere.org/u/hucste
Contact :
Status : Hors-ligne

lol a écrit :(...)
Oui, je sais être lourdaud aussi... :005:
M'en fous ... NA :p
PTDR :D
lol a écrit :
PengouinPdt a écrit :
lol a écrit :(...)
Quel avantage est-ce que je tire de passer à certbot ?
La question est : Comment tu fais exactement à l'heure actuelle ? Tu te sers de quel client ?
Ben... c'est dans mon premier post: letsencrypt compilé.
Relis ce que j'ai mis en post #12 ;-)
Autrement dit, ton client est vieux !!!
PengouinPdt { le seul, le vrai } ~ " Libre as a Pengouin "
- DIY - Debian Sid | Devuan Ceres
----
Ne réponds pas aux PM d'assistance
Répondre