• Applications
  • [Discussion] Certificat SSL signé et gratuit avec Let's Encrypt

Petit tuto pour avoir un A+

Il faut se connecter en root, pour les opérations suivantes.

Il faut stopper nginx avant tout
service nginx stop
Toujours mettre à jour le serveur avant :
aptitude update && aptitude upgrade
mkdir /etc/nginx/ssl
openssl openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
# vim /etc/nginx/ssl/ciphers.conf

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA";
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_session_cache shared:SSL:10m;
ssl_ecdh_curve secp384r1;
ssl_session_tickets off;

add_header Strict-Transport-Security "max-age=31536000";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
note : le max age de Strict-Transport-Security correspond à 1an.

Ensuite il faut inclure le fichier ciphers.conf dans http {}
# vim /etc/nginx/nginx.conf

http {
    include /etc/nginx/ssl/ciphers.conf
}
Installation de letsencrypt
cd /tmp
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
Après cette étape il faut générer le certificat via let's encrypt, avec une clée RSA de 4096bits
./letsencrypt-auto --help all
./letsencrypt-auto certonly --rsa-key-size 4096
Il faudra ajouter une adresse mail, accepter la licence, et ajouter les sous domaines espacer d'un espace.

Pour finir il faudra ajouter 2 lignes dans chacun de vos vhosts.
# vim /etc/nginx/sites-enbled/monsite.fr.conf

server {
    ssl_certificate /etc/letsencrypt/live/monsite.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/monsite.fr/privkey.pem;
}
Pour finaliser il ne faut pas oublier de redémarrer nginx
service nginx start
Quitte à avoir une configuration homogène, et pour éviter un léger surcoût CPU, mettre ssl_ecdh_curve à secp384r1 est plus que suffisant. Il est aussi bon de de savoir que par défaut, letsencrypt génère des clés RSA 2048 bits, il est donc possible d'utiliser une taille de 4096 par exemple, il suffira de préciser (c'est le petit plus pour les paranoïaques et ceux qui veulent gonfler leur note sur ssllabs).
Oui, proposez vos améliorations au niveau de la config nginx, je mettrai le tuto de jede à jour si il ne le fait pas.

ATTENTION : J'ai eu un soucis avec les header envoyé par nginx à vos navigateur web, notamment avec HSTS.
C'est cette ligne qui pose problème dans certain cas.
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
Elle va vous poser un problème si vous avez des sous domaines que vous voulez garder en http://.
Votre navigateur web va forcer le https sur tous les sous domaines de votre nom de domaine.
J'ai eu le problème avec le https://chat.mondedie.fr ou même http://flarum.mondedie.fr

Pour résoudre le problème j'ai modifié comme ça
add_header Strict-Transport-Security "max-age=31536000";
edit : je pense que l'on va garder cette config
Je suis du même avis que Wonderfall, mettre plutôt un ECC à 384 bits au lieu de 521, surtout pour des questions de compatibilité avec certains navigateurs :
ssl_ecdh_curve secp384r1;
Pour la suite de chiffrement je te conseil :
ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA"
ça équivaut à "EECDH+AES" mais sans ECDHE-ECDSA, inutile vu que ta clé publique est de type RSA.

Tout est expliqué ici : https://blog.imirhil.fr/2015/09/02/cryptcheck-verifiez-implementations-tls.html

Peut être aussi activer TLSv1 et v1.1 pour des raisons de compatibilité, mais bon les navigateurs récents supportent tous TLSv1.2, à voir.

Pour HSTS, vaut mieux partir sur la directive que tu as modifié :
add_header Strict-Transport-Security "max-age=31536000";
includeSubdomains pose soucis vu que plusieurs sous-domaines n'ont pas encore de certificats valides et la directive preload est inutile vu que mondedie.fr n'est pas présent dans les listes HSTS préchargées des navigateurs.

Mais sinon c'est good !
Bonjour à tous,
J'ai pris chez OVH un VPS, installé Prestashop par OVH.
Tout marche bien visiblement. Or je n'arrive pas a lancer Let's encrypt
Je me connecte en root et j'essaie de recuperer let's encrypt mais rien ne se passe.
Quelqu'un aurait il une idée ?
Mon niveau de compétence est franchement pas terrible, oui je sais ...
mirtouf wrote:Et bim !
Prefix handling Not valid for "www.mondedie.fr" CONFUSING

Je confirme une belle erreur sur https://www.mondedie.fr
une redirection 301 ?
c'est réglé.
malartic wrote:Bonjour à tous,
J'ai pris chez OVH un VPS, installé Prestashop par OVH.
Tout marche bien visiblement. Or je n'arrive pas a lancer Let's encrypt
Je me connecte en root et j'essaie de recuperer let's encrypt mais rien ne se passe.
Quelqu'un aurait il une idée ?
Mon niveau de compétence est franchement pas terrible, oui je sais ...
Copie/colle ton message d'erreur ici
Pour le faire en une commande (pratique pour des scripts d'auto génération, pour mettre à jour le cert) :
./letsencrypt-auto certonly --agree-tos -m contact@domain.tld -d mail.domain.tld -d domain.tld -d www.domain.tld
Merci Magicalex,
Le message d'erreur est le suivant :
bash : git : commande introuvable
malartic wrote:Merci Magicalex,
Le message d'erreur est le suivant :
bash : git : commande introuvable
apt-get install git
xataz wrote:
malartic wrote:Merci Magicalex,
Le message d'erreur est le suivant :
bash : git : commande introuvable
apt-get install git

A présent :
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 git

avec apt-get install git-core c'est pareil

Alors je vous l'avez pas dit que j'étais pas doué ?
Si mes posts floodent votre forums, je le comprends pas de soucis, surtout vu leur niveau.
Alors je m'arreterai là
Tente de faire :
apt-get update && apt-get upgrade && apt-get install git-core
xataz wrote:Tente de faire :
apt-get update && apt-get upgrade && apt-get install git-core
ça à l'air de fonctionner, je poursuis
J'ai réussi à avancer, grace à vous,
Tout se passe bien jusqu'à la fin et j'obtiens ceci :

Failed authorization procedure. domain.example.tld (tls-sni-01)
the server couldn't connect to the client for the DV Server failure at resolver
malartic wrote:J'ai réussi à avancer, grace à vous,
Tout se passe bien jusqu'à la fin et j'obtiens ceci :

Failed authorization procedure. domain.example.tld (tls-sni-01)
the server couldn't connect to the client for the DV Server failure at resolver

Peux tu préciser la commande que tu exécutes ?
Peux tu préciser la commande que tu exécutes ?

oui bien sur, j'ai procédé ainsi :
cd /tmp
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --agree-dev-preview --server https://acme-v01.api.letsencrypt.org/directory auth

ensuite je rentre mon email, mon domaine
puis j'obtiens le message suivant :

Failed authorization procedure. domain.example.tld (tls-sni-01)
the server couldn't connect to the client for the DV Server failure at resolver
Merci
Le fonctionnement à un peu changé en passant à la beta public:

Arrête nginx (ou autre serveur web) :
service nginx stop
Puis lance letsencrypt :
./letsencrypt-auto certonly
Les certificats ce trouvent ensuite dans /etc/letsencrypt/live


Relance ensuite nginx :
service nginx start
Merci Xataz,
Visiblement ça a fonctionné avec ton aide précieuse.

the certificate was successfully created and placed in /etc/nginx/live/example.com/

A présent je trouve sur le net des infos différentes je ne voudrais pas essayer n'importe quoi et tout planter.
J'ai eu pour l'instant des reponses comme : permission non accordé ou commande introuvable
bonsoir a tous

j'ai remarquer divers tutoriel sur le web qui regroupe des scripts .sh pour un renouvellement du ou des certificats apres 60 jours d'utilisation

notament celui ci :ici et celui la



une âme charitable pour suggérez ce bonus ?

Cordialement
Diesel wrote:bonsoir a tous

j'ai remarquer divers tutoriel sur le web qui regroupe des scripts .sh pour un renouvellement du ou des certificats apres 60 jours d'utilisation

notament celui ci :ici et celui la



une âme charitable suggérez ce bonus ?

Cordialement
A l'heure actuelle, il suffit "simplement" de relancer le processus et, par la suite, la procédure pourrait changer. Un script est-il vraiment nécessaire ?