Divers

LET'S ENCRYPT

D

Lundi 20 février 2017

Mis à jour le mercredi 27 septembre 2017

Let's Encrypt

Let's Encrypt permet de générer des certificats HTTPS gratuitement pour vos sites internet.

Pour pouvior générer des certificats HTTPS, il faut avoir accès au serveur en ligne de commande.


Générer un certificat HTTPS

Sur le serveur, il faut exécuter :

git clone https://github.com/letsencrypt/letsencrypt

Ensuite, il faut arrêter les serveurs qui écoute sur le port 80 :

service nginx stop 

si vous avez Nginx ou si vous avez Apache :

service apache2 stop

Aller dans le dossier où Let’s Encrypt a été cloné, et exécutez :

./letsencrypt-auto --server https://acme-v01.api.letsencrypt.org/directory certonly

Choisissez le certificat standalone, puis donner votre adresse email et les noms de domains à certifier séparer par des espaces. Avec Let's Encrypt, vous ne pouvez pas utilisez le wildcard (*) pour certifier plusieurs domaines ou sous domaines à la fois.

Le résultat dans la console sera :

Generating key (2048 bits): /etc/letsencrypt/keys/0003_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0003_csr-certbot.pem

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at   /etc/letsencrypt/live/wadzaa.fr/fullchain.pem. Your cert will   expire on 2017-05-21. To obtain a new or tweaked version of this   certificate in the future, simply run letsencrypt-auto again. To   non-interactively renew *all* of your certificates, run   "letsencrypt-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le

Intégrer les certificats avec Apache

Ensuite, pour Apache, il faut inclure les fichiers générés dans le virtualhost :

SSLCertificateFile "/etc/letsencrypt/live/monsite.net/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/monsite.net/privkey.pem"
SSLCertificateChainFile "/etc/letsencrypt/live/monsite.net/chain.pem"

Pour faire la redirection de HTTP vers HTTPS, il faut ajouter au début du fichier :

<Virtualhost *:80>
        ServerName oc.kgaut.net
        RedirectMatch permanent ^(.*)$ https://oc.kgaut.net$1
</Virtualhost>

Intégrer les certificats avec Nginx

Ou avec Nginx :

include /etc/nginx/conf.d/monsite.net.certificate;

monsite.net.certificate est le fichier suivant :

    ####    Let's Encrypt Pass-Through

     ####    Inclusion de SSL
    ####    En-têtes de sécurité
    # [ATTENTION] Strict-Transport-sécurité arrêtera l'accès HTTP pour le temps spécifié.
    #add_header Strict-Transport-Security "max-age=63072000";
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

    # [ATTENTION] X-Frame-Options DENY brisera les sites iframe.
    #add_header X-Frame-Options DENY;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options nosniff;

     #add_header X-Xss-Protection "1";
    ## Désactivé par rapport utilisation ruby on rails errors copy 2x
    add_header X-XSS-Protection "1; mode=block";

     ####    Liens clés SSL
    ssl on;

     # [OPTION] Nom du serveur
    #   Lien symbolique vers les fichiers principaux
    #   ln  -s  /etc/letsencrypt/live/monsite.net/fullchain.pem  /home/user1/config/ssl/monsite.net.pem
    #   ln  -s  /etc/letsencrypt/live/monsite.net/privkey.pem  /home/user1/config/ssl/monsite.net.privkey.pem
    ssl_certificate         /home/da/config/ssl/monsite.net.pem;
    ssl_certificate_key     /home/da/config/ssl/monsite.net.privkey.pem;
    ssl_trusted_certificate /home/da/config/ssl/monsite.net.pem;

      #### SSL Stapling
    # [ATTENTION] Nécessite un 'ssl_trusted_certificate' valide
    ssl_stapling on;
    ssl_stapling_verify on;

     # Google DNS, Open DNS, Dyn DNS.
    resolver 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 216.146.35.35 216.146.36.36 valid=300s;
    resolver_timeout 3s;

     ####    Tickets de session
    ssl_session_tickets on;
    ssl_session_timeout 24h;

     # [ATTENTION] Il faudra générer le ticket de session.
    ssl_session_cache shared:SSL:100m;
    #
    ssl_session_ticket_key /etc/nginx/ssl/ticket.key;

     ####    Paramètres de Diffie-Helman
    # [ATTENTION] Les paramètres Diffie-Helman doivent être générés.
    ssl_dhparam /etc/nginx/ssl/dhparam4.pem;

     ####    ECDH Curve
    # [DEFAULT] Généralement suffisante.
    ssl_ecdh_curve secp384r1;

      ####    Préférence & Protocoles
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

     # [DEFAULT] Mozilla SSL Configuration Generator
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    # Nginx for Modern Browsers
    # Grade A (A+ with HSTS at >= 6 Months)
    # 90 % Security
    # Medium Compatibility
    # - No Java 6 (No DH parameters > 1024 bits)
    # - No IE on XP
    # Robust Forward Secrecy
    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:ECDHE-RSA-AES128-SHA256';

Regénérer les certificats

Les certificats seront valides 90 jours, pour les revalider 90 jours, il faut lancer la commande :

letsencrypt-auto again

Il y a aussi cette commande mais j’ai pas compris à quoi elle sert :

letsencrypt-auto renew

Sources https://kgaut.net/journal/2015/comment-generer-son-certificat-ssl-avec-lets-encrypt.html

Une erreur ? une question ? une critique ? une faute ? un conseil ? ou tout simplement un merci ?

Lâche ton commentaire