Outils pour utilisateurs

Outils du site


Panneau latéral

linux:ssl (lu 51791 fois)

Ceci est une ancienne révision du document !


ssl

Ou comment avoir un https pour son site.

Cette page est à réorganiser car il y a eu beaucoup de test et certaines infos sont obsolètes. Voici quelques liens :

Avec StartSSL

Aller sur ce site ⇒ http://www.startssl.com/ et créez-vous un compte. Il faudra ensuite installer le certificat qu’il vous fournirons pour vous identifier.

Vous devrez valider votre email et nom de domaine en cliquant sur Validations Wizard

Toujours dans Validations Wizard vous devez faire vérifier votre nom de domaine en choisissant Domain Name Validation

Un mail de vérification sera envoyé à l’une (que vous choisissez) des adresses email renseigné pour votre nom de domaine.

Ensuite, cliquez sur Certificates Wizard, choisissez Web Server SSL/TLS Certificate dans la liste et fournissez un mot de passe pour la clé privé.

Copier/coller la clé sur votre serveur. Suivez les indications.

openssl rsa -in ssl.key -out ssl.key

Cliquez sur Continue et choisissez votre nom de domaine.

A la fin vous devez avoir 4 fichiers

ca.pem  ssl.crt  ssl.key sub.class1.server.ca.pem

Configurer ensuite apache dans ce style

<VirtualHost _default_:443>
   DocumentRoot /home/httpd/private
   ErrorLog /usr/local/apache/logs/error_log
   TransferLog /usr/local/apache/logs/access_log
   SSLEngine on
   SSLProtocol all -SSLv2
   SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM

   SSLCertificateFile /usr/local/apache/conf/ssl.crt
   SSLCertificateKeyFile /usr/local/apache/conf/ssl.key
   SSLCertificateChainFile /usr/local/apache/conf/sub.class1.server.ca.pem
   CustomLog /usr/local/apache/logs/ssl_request_log \
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

Avec Let's Encrypt

Let’s Encrypt a bien évolué depuis sa version beta, je vais maintenant mettre mes scripts à jour et détailler le fonctionnement sur Debian 7 et Apache

Le script s’appelle maintenant Certbot et les sources sont dispo sur https://github.com/certbot/certbot

Le site suivant permet de faciliter l’installation de Certbothttps://certbot.eff.org/

Sinon il y a toujours le script standalone ⇒ https://dl.eff.org/certbot-auto

certbot est dispo dans le dépôt backport de debian. Il suffit d’ajouter ce dépôt dans votre /etc/apt/sources.list

deb http://ftp.debian.org/debian jessie-backports main
# apt update
# apt install certbot

Pour émettre un certificat, letsencrypt doit s’assurer que vous avez bien la main sur les ressources à certifier. Letsencrypt propose 3 types de challenge :

  • HTTP-01 : challenge par requête http, le plus couramment utilisé pour les certificats simples
  • TLS-SNI-01 : challenge par présentation de certificat TLS. Ce challenge a été désactivé suite à des problèmes de sécurité.
  • DNS-01 : challenge par requête DNS sur une entrée TXT dans le domaine.

Si dans le cas d’un site web, cette validation se résume généralement à vérifier que vous avez la main sur le serveur web, dans le cas d’un certificat wildcard il faut prouver que vous avez la main sur l’ensemble du domaine. Aussi, seul le challenge DNS-01 est possible pour des certificats wildcard letsencrypt, il faudra donc pouvoir éditer votre zone DNS pour commander ce type de certificat.

Je décide d’utiliser le plugins webroot qui permet de générer les fichiers de certificat et de nous laisser libre de configurer apache comme on souhaite

# certbot certonly --webroot -w /home/public_html/wiki.p2pfr.com/ -d wiki.p2pfr.com

La première fois que vous lancerez ce script, il vous sera demandé une adresse email et d’accepter les Terms of Service.

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/wiki.p2pfr.com/fullchain.pem. Your cert will
   expire on 2016-08-11. To obtain a new version of the certificate in
   the future, simply run Certbot again.
 - 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

Dans le cas d’un wildcard avec authentification par DNS

# certbot certonly --manual -d '*.edmc73.com'
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for edmc73.com

-------------------------------------------------------------------------------
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
-------------------------------------------------------------------------------
(Y)es/(N)o: y

-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.edmc73.com with the following value:

6CmoURMbv3F14hJdzR8zqXrhcYJeKWJEhT8xZcz4gUY

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue

C’est à ce moment la que vous allez ajouter une entrée DNS sur votre nom de domaine. Ensuite pressez Enter :)

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/edmc73.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/edmc73.com/privkey.pem
   Your cert will expire on 2033-06-13. 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
Attention, la méthode par DNS a une validation manuel et ne permet pas facilement d’être renouvelé automatiquement

Vous devrez retaper la commande

# certbot certonly --manual -d *.edmc73.com

Pour renouveler le certificat

Voir la doc: https://certbot.eff.org/docs/using.html#pre-and-post-validation-hooks

Tous les fichiers sont dans /etc/letsencrypt

Maintenant nous avons 4 fichiers prêt à l’emploi pour configurer notre Apache

 <IfModule mod_ssl.c>
                SSLEngine on
                SSLProtocol all -SSLv2
                SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
                SSLCertificateFile      /etc/letsencrypt/live/wiki.p2pfr.com/cert.pem
                SSLCertificateKeyFile   /etc/letsencrypt/live/wiki.p2pfr.com/privkey.pem
                SSLCertificateChainFile /etc/letsencrypt/live/wiki.p2pfr.com/chain.pem
                SSLCACertificateFile    /etc/letsencrypt/live/wiki.p2pfr.com/fullchain.pem
                SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown
 </IfModule>

ou bien, variante fourni par letsencrypt

 <IfModule mod_ssl.c>
                # Baseline setting to Include for SSL sites

                SSLEngine on
                
                # Intermediate configuration, tweak to your needs
                SSLProtocol             all -SSLv2 -SSLv3
                SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
                SSLHonorCipherOrder     on
                SSLCompression          off

                SSLOptions +StrictRequire

                # Add vhost name to log entries:
                LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
                LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common

                #CustomLog /var/log/apache2/access.log vhost_combined
                #LogLevel warn
                #ErrorLog /var/log/apache2/error.log

                # Always ensure Cookies have "Secure" set (JAH 2012/1)
                #Header edit Set-Cookie (?i)^(.*)(;\s*secure)??((\s*;)?(.*)) "$1; Secure$3$4"

                SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
                SSLCertificateFile      /etc/letsencrypt/live/wiki.p2pfr.com/cert.pem
                SSLCertificateKeyFile   /etc/letsencrypt/live/wiki.p2pfr.com/privkey.pem
                SSLCertificateChainFile /etc/letsencrypt/live/wiki.p2pfr.com/chain.pem
                SSLCACertificateFile    /etc/letsencrypt/live/wiki.p2pfr.com/fullchain.pem
                SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown


 </IfModule>

On reload apache

service apache2 reload

Pour automatiser le renouvellement des certificats, il faut simplement faire un cron qui tourne 2 fois par jours comme le conseil let’s encrypt avec la commande

# ./certbot-auto renew --quiet --no-self-upgrade

Cette commande va vérifier automatiquement tous vos certificats installés et si l’un d’eux expire, il va le mettre à jour automatiquement.

Exemple de certificat valide

Checking for new version...
Requesting root privileges to run certbot...
   /root/.local/share/letsencrypt/bin/letsencrypt renew

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/wiki.p2pfr.com.conf
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/forum.p2pfr.com.conf
-------------------------------------------------------------------------------

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/wiki.p2pfr.com/fullchain.pem (skipped)
  /etc/letsencrypt/live/forum.p2pfr.com/fullchain.pem (skipped)
No renewals were attempted.

Exemple de certificat mis à jour

Checking for new version...
Requesting root privileges to run certbot...
   /root/.local/share/letsencrypt/bin/letsencrypt renew

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/wiki.p2pfr.com.conf
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/forum.p2pfr.com.conf
-------------------------------------------------------------------------------

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/wiki.p2pfr.com/fullchain.pem (success)
  /etc/letsencrypt/live/forum.p2pfr.com/fullchain.pem (success)

Voici mon cron qui permet dans le cas où un certificat est renouvelé de recharger apache et d’envoyer un mail. Je le lance 2 fois par jour comme le dit la doc. Adapter le chemin de votre script et mettez votre adresse email à la place de root si vous n’avez pas créé d’alias pour root.

13 5,17 * * * /root/letsencrypt/certbot-auto renew -q --no-self-upgrade --renew-hook 'service apache2 reload && echo "Mise à jour pour le domaine $RENEWED_DOMAINS" | mail -s "Mise à jour des certificats SSL" root'

Et voila, vous n’aurez plus d’excuse maintenant pour ne pas avoir un site en https :)

Ce qui suit est obsolète, mais je le garde pour archive

Après avoir demandé une invitation pour tester en avant première ce nouveau service de certificat ssl gratuit, j’ai reçu un mail avec quelques commandes à taper.

1ère chose, récupérer le script

git clone https://github.com/letsencrypt/letsencrypt
If you're running Apache on a recent Debian-based OS, you can try the Apache plugin, which automates both obtaining and installing certs:

Je me dit, chouette un script tout prêt à l’emploi, c’est parti !

./letsencrypt-auto --apache --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview

Cette commande lance l’installation de package python et autre… J’aime pas vraiment ce genre de script qui se permet d’installer des trucs sans te demander ton avis. Tout ça pour lancer un script dans un environnement virtuel de python qui se résume par un échec.

Running with virtualenv: sudo /home/user/.local/share/letsencrypt/bin/letsencrypt --apache --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview
The apache plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('Unable to parse runtime variables',)

Bien que tous les efforts ont été fait pour nous simplifier la vie, je n’aime pas vraiment ça, surtout pour installer un certificat ssl qui ne demande qu’à copier 3-4 fichiers et écrire quelques lignes de config dans apache.

J’ai l’impression de perdre plus de temps à comprendre leur système de plugins. Bref, après plusieurs minutes de lecture de la doc ( https://letsencrypt.readthedocs.org/en/latest/using.html#installation ) je fini par utiliser le plugins manual

./letsencrypt-auto certonly -a manual -d forum.p2pfr.com \
--server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview

Ce qui nous sort toutes les commandes à taper en root sur le serveur web

Make sure your web server displays the following content at
http://forum.p2pfr.com/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxxxxxx before continuing:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Content-Type header MUST be set to text/plain.

If you don't have HTTP server configured, you can run the following
command on the target server (as root):

mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge
cd /tmp/letsencrypt/public_html
printf "%s" xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx > .well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# run only once per server:
$(command -v python2 || command -v python2.7 || command -v python2.6) -c \
"import BaseHTTPServer, SimpleHTTPServer; \
SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map = {'': 'text/plain'}; \
s = BaseHTTPServer.HTTPServer(('', 80), SimpleHTTPServer.SimpleHTTPRequestHandler); \
s.serve_forever()"

Alors ok, on voit mieux ce qui se passe, mais ça me parait encore trop lourd, je décide de tester la méthode webroot où l’on définit sur le serveur web où se trouve le site que l’on veut mettre en https et il gère le reste

./letsencrypt-auto certonly -a webroot --webroot-path /home/public_html/forum.p2pfr.com -d forum.p2pfr.com \
--server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview

et la magie opère

Updating letsencrypt and virtual environment dependencies.......
Running with virtualenv: sudo /home/user/.local/share/letsencrypt/bin/letsencrypt certonly -a webroot --webroot-path /home/public_html/forum.p2pfr.com/ -d forum.p2pfr.com --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/forum.p2pfr.com/fullchain.pem. Your cert will
   expire on 2016-02-15. To obtain a new version of the certificate in
   the future, simply run Let's Encrypt again.

Maintenant nous avons 4 fichiers prêt à l’emploi pour configurer notre Apache

 <IfModule mod_ssl.c>
                SSLEngine on
                SSLProtocol all -SSLv2
                SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
                SSLCertificateFile      /etc/letsencrypt/live/forum.p2pfr.com/cert.pem
                SSLCertificateKeyFile   /etc/letsencrypt/live/forum.p2pfr.com/privkey.pem
                SSLCertificateChainFile /etc/letsencrypt/live/forum.p2pfr.com/chain.pem
                SSLCACertificateFile    /etc/letsencrypt/live/forum.p2pfr.com/fullchain.pem
                SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown
 </IfModule>

On reload apache

service apache2 reload

et voici le résultat

Pour renouveler le certificat, il suffit de relancer la même dernière commande.

Le certificat est valide 90 jours, donc on peut lancer cette commande en automatique tous les 88 jours par exemple via le cron.

Le cron ne permet pas d’exécuter un script tous les 88 jours, je propose donc un petit script que vous exécuterez tous les jours par le cron et qui fera un test sur la date du certificat pour savoir si il est plus vieux que 88 jours, et dans ce cas il exécutera le script letsencrypt pour renouveler le certificat.

N’oubliez pas d’ajouter l’option –renew-by-default

#!/bin/bash
 
if test `find /etc/letsencrypt/live/forum.p2pfr.com/cert.pem -mtime +88`
then
  /home/user/letsencrypt/letsencrypt-auto certonly -a webroot --webroot-path /home/public_html/p2pfr.com/forum/ -d forum.p2pfr.com --server https://acme-v01.api.letsencrypt.org/directory --renew-by-default
fi

Pour avoir un peu d’aide

./letsencrypt-auto --help all

Retour d'expérience

Après 90 jours, c’est donc le moment fatidique de mettre à jour le certificat. Pour info nous recevons un mail de notification d’expiration 20 jours avant, 9 jours avant et le jour J. En lançant la commande

/home/user/letsencrypt/letsencrypt-auto certonly -a webroot --webroot-path /home/public_html/p2pfr.com/forum/ -d forum.p2pfr.com --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview --renew-by-default

J’obtiens un joli

Updating letsencrypt and virtual environment dependencies...You are using pip version 7.1.2, however version 8.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
..Could not open requirements file: [Errno 2] No such file or directory: 'py26reqs.txt'

Je lance le script tout seul

./letsencrypt-auto
Updating letsencrypt and virtual environment dependencies.......
Running with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt
No installers seem to be present and working on your system; fix that or try running letsencrypt with the "certonly" command

Je lance avec le “certonly” comme il me le suggère et bon bref, je décide de relancer notre commande du début et bingo :)

Updating letsencrypt and virtual environment dependencies.......
Running with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt certonly -a webroot --webroot-path /home/public_html/p2pfr.com/forum/ -d forum.p2pfr.com --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview
Use of --agree-dev-preview is deprecated.

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/forum.p2pfr.com/fullchain.pem. Your cert will
   expire on 2016-05-15. To obtain a new version of the certificate in
   the future, simply run Let's Encrypt again.
 - If you like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Par contre il faut quand même recharger apache

service apache2 reload

Sinon le nouveau certificat n’est pas disponible

2ème retour

let’s encrypt a changé de script.

Après avoir réinstallé leur nouveau script certbot, la nouvelle commande est un peu plus simple

# ./certbot-auto certonly --webroot -w /home/public_html/p2pfr.com/forum -d forum.p2pfr.com
Checking for new version...
Requesting root privileges to run certbot...
   /root/.local/share/letsencrypt/bin/letsencrypt certonly --webroot -w /home/public_html/p2pfr.com/forum -d forum.p2pfr.com

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/forum.p2pfr.com/fullchain.pem. Your cert will
   expire on 2016-08-11. To obtain a new version of the certificate in
   the future, simply run Certbot again.
 - 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

La première fois, un email vous sera demandé ainsi qu’une validation de la licence, des infos seront stocké dans /etc/letsencrypt

Commandes

Partie fonctionnelle

La commande qui va bien, pensez bien à associer le certificat pour le nom de domaine + le www.

# ./certbot-auto certonly --webroot -w /home/public_html/p2pfr.com -d p2pfr.com -d www.p2pfr.com --expand

Ne pas oublié un reload d’apache pour que le nouveau certificat soit pris en compte.

service apache2 reload

Pour voir la liste des certificats installés sur le système

./certbot-auto certificates

Ensuite pour supprimer un certificat du système

./certbot-auto delete --cert-name p2pfr.com

Si vous changer le path dans votre config apache, vous pouvez modifier la config letsencrypt à la main dans /etc/letsencrypt/renewal/xxxx.conf ensuite, tester si tout se passe bien avec la commande

certbot renew --dry-run

Avec certbot de debian

Maintenant certbot est directement intégré à debian 8 Jessie

La tache renew est maintenant un peu plus complexe car elle utilise systemd mais aussi le cron au cas ou systemd serait absent..

Bref, pour continuer de recevoir un mail à chaque renouvellement, il faut modifier le fichier /lib/systemd/system/certbot.service et ajouter du code après la commande /usr/bin/certbot -q renew

[Unit]
Description=Certbot
Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html
Documentation=https://letsencrypt.readthedocs.io/en/latest/
[Service]
Type=oneshot
ExecStartPre=/usr/bin/perl -e 'sleep int(rand(3600))'
ExecStart=/usr/bin/certbot -q renew --no-self-upgrade --renew-hook 'service apache2 reload && echo "Mise à jour pour le domaine $RENEWED_DOMAINS" | mail -s "Mise à jour des certificats SSL" root'
PrivateTmp=true

Config apache pour centraliser les acme-challenge

En mode certonly, letsencrypt crée un répertoire à la racine de votre site web .well-known/acme-challenge/xxxxxxxxxxxxx pour vérifier que votre serveur appartient bien au nom de domaine. Oui mais voila, dans certain cas, vous avez configuré votre site web soit en full https, donc http non dispo, ou alors il y a une application qui redirige toutes les urls vers un script, bref, pas possible d’accéder au répertoire.

Nous allons créer une config apache qui va centraliser toutes ces demandes dans un répertoire unique, par exemple /var/www/letsencrypt

Créez le répertoire /var/www/letsencrypt

mkdir /var/www/letsencrypt

Créez le fichier /etc/apache2/conf-available/letsencrypt.conf

Alias /.well-known/acme-challenge /var/www/letsencrypt/.well-known/acme-challenge
<Directory "/var/www/letsencrypt/.well-known/acme-challenge">
    Options -Indexes
    AllowOverride all
    Require all granted
</Directory>
a2enconf letsencrypt
systemctl reload apache2

et maintenant la commande certbot a utiliser

certbot certonly --webroot -w /var/www/letsencrypt/ -d edmc73.com

Ce sera le même répertoire pour tous les domaines de votre serveur.

Alternative à certbot

Si comme moi vous trouvez un peu relou l’installation de certbot qui fait du apt install dans tous les sens pour mettre un environnement python dont vous n’avez pas forcement besoin, alors vous allez aimer acme.sh

https://github.com/Neilpang/acme.sh

An ACME protocol client written purely in Shell (Unix shell) language.
Full ACME protocol implementation.
Simple, powerful and very easy to use. You only need 3 minutes to learn it.
Bash, dash and sh compatible.
Simplest shell script for Let's Encrypt free certificate client.
Purely written in Shell with no dependencies on python or the official Let's Encrypt client.
Just one script to issue, renew and install your certificates automatically.
DOES NOT require root/sudoer access.
It's probably the easiest&smallest&smartest shell script to automatically issue & renew the free certificates from Let's Encrypt.

Pas encore encore testé, mais recommandé par proxmox ( https://pve.proxmox.com/wiki/HTTPS_Certificate_Configuration_(Version_4.x_and_newer)#CAs_other_than_Let.27s_Encrypt )

Let's encrypt sur centos avec nginx en reverse proxy

en gros suivre ce guide officiel ⇒ https://certbot.eff.org/lets-encrypt/centosrhel7-nginx

yum install python2-certbot-nginx

Pour ne pas toucher à ma conf nginx j’ai lancé la commande suivante

certbot --nginx certonly -d monnomdedomaine.fr

Cela permet d’ajouter temporairement une config nginx juste pour vérifier que le nom de domaine pointe bien sur notre serveur et de tout remettre comme avant.

Les certificats se trouvent dans /etc/letsencrypt/live/xxxx

Pour vérifier, lancez simplement la commande

certbot certificates

Exemple de conf nginx

server  {
   listen 80;
   server_name votrenomde.domaine;
   # pour forcer le site en https
   rewrite ^ https://$server_name$request_uri? permanent;
}
 
server {
   listen       443;
   server_name  votrenomde.domaine;
   ssl on;
   ssl_certificate /etc/letsencrypt/live/votrenomde.domaineg/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/votrenomde.domaine/privkey.pem;
   include /etc/letsencrypt/options-ssl-nginx.conf;
   location / {
               proxy_pass http://192.168.0.60/;
           }
}
linux/ssl.1584627577.txt.gz · Dernière modification: 19-03-2020 15:19 de edmc73