Hello!
Dans ce tuto nous allons voir comment générer gratuittement un certificat SSL avec Let’s Encrypt !
C’est quoi Let’s Encrypt?
Let’s Encrypt (ou LE) est un projet Open Source qui est financé par de grands noms du web tels que : Mozilla, Google, Cisco et plus récement OVH (liste complète ici)
Ce projet a pour but de simplifer la création de certificat SSL afin de sécuriser les échanges client/serveur mais l’énorme avantage et que ceci est tout a fait gratuit !
J’étais inscrit a la bêta fermé mais maintenant que la Beta publique est disponible je vais vous expliquer comment ça marche.
Important!
ATTENTION, pour cette béta publique les certificats SSL que vous allez génerer ne seront valide que 90 jours. Vous pouvez toujours les renouvelés avant la fin de l’échéance.Il y a deux façon génerer des certificats SSL avec LE, Automatique ou Manuel.
Nous allons voir comment utiliser les deux méthodes.
La méthode automatique
La méthode automatique, consiste à installer les outils de LE directement sur le serveur web qui héberge le site a mettre en HTTPS.
Nous allons faire cela à partir d’un serveur Web sur CentOS:
Installation des dépendances:
Pour utiliser LE sur votre serveur web vous devez installer GIT.
yum install git
Installation de LE
Une fois git installé vous pouvez cloner le git de LE sur votre serveur:
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
Afin de le retrouver facilement je l’ai mis dans /opt/
Une fois le dépot cloné, allez dans le dossier /opt/letsencrypt
cd /opt/letsencrypt
Création de votre certificat SSL
Et tapez la commande afin de créer votre certificat SSL:
./letsencrypt-auto --apache -w racine_de_votre_site_web -d votredomaine.com
Exemple pour créer un certificat SSL pour web.denisrosenkranz.com
./letsencrypt-auto certonly --webroot -w /var/www/html/ -d web.denisrosenkranz.com
Si c’est la première fois que vous lancez cette commande des dépendances vont être installées
Important!
Si vous avez cette erreur: /letsencrypt-auto: line 165: virtualenv: command not found
Cela veut dire que vous n’avez pas la bonne version de Python supportée par Letsencrypt.
Vous pouvez regler ça avec les commandes suivantes:
yum install centos-release-SCL sudo yum update sudo yum install scl-utils python27 python27-scldevel scl enable python27 bash
Vous pouvez relancer la commande et si tout se passe bien vous devried avoir quelque chose comme ceci à la fin
Version: 1.1-20080819 Version: 1.1-20080819 IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/web.denisrosenkranz.com/fullchain.pem. Your cert will expire on 2016-05-05. 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
Important!
Si cette commande ne fonctionne pas pour des raisons diverses (pour ma part cela ne fonctionnais pas parce que mon site fonctionnais sur le port 8080 au lieu de 80), vous pouvez utiliser le mode standalone qui va créer un serveur web temporaire pour vérifier que votre nom de domaine pointe bien sur votre serveur.
Pour cela vous devez arrêter votre serveur web si celui-ci écoute sur le 443 et utiliser cette commande:
./letsencrypt-auto certonly --standalone -d web.denisrosenkranz.com
Vos certificats seront donc disponibles dans /etc/letsencrypt/live/votredomaine.com
Méthode manuelle
Si vous ne pouvez/voulez pas installer les outils de LE sur votre serveur Web vous pouvez le faire à partir de n’importe quelle machine sous Linux.
Voici un exemple si vous utilisez Ubuntu.
Comme pour le serveur vous devez installer git et cloner le dépot:
sudo apt-get install git sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
La méthode manuelle fonctionne de la façon suivante:
- Vous spécifiez le domaine pour lequel vous souhaitez installer un certificat SSL
- LE va fous fournir les informations pour créer sur votre serveur distant un page que LE va vérifier afin de valider que votre serveur vous appartient.
- Une fois cela fait les certificats vont être générés.
Voici la commande:
cd /opt/letsencrypt sudo ./letsencrypt-auto certonly -d votredomaine.com --manual
Vous aurez quelquechose come ceci:
Make sure your web server displays the following content at http://votredomaine.com/.well-known/acme-challenge/HkMzdniMlWmFXqx7enflAiasdsfNOdHfInyB0F61GdJSa-6g before continuing: HkMzdniMlWmFXqx7enflAiNOdHfInyB0F61GdJSa-6g.AUKfznt4sfV0vciGhCElv_Awl9r4az0l8bTj_Y1qbfLDE 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" HkMzdniMlWmFXqx7enflAiNOdHfInyB0F61GdJSa-6g.AUKfznt4V0vciGhCElv_Awl9r4az0l8bTj_Y1qbfLDE > .well-known/acme-challenge/HkMzdniMlWmFXqx7enflAiNOdHfInyB0F61GdJSa-6g # run only once per server: $(command -v python2 || command -v python2.7 || command -v python2.6) -c \ "import BaseHTTPServer, SimpleHTTPServer; \ s = BaseHTTPServer.HTTPServer(('', 80), SimpleHTTPServer.SimpleHTTPRequestHandler); \ s.serve_forever()" Press ENTER to continue:
Uen fois cela fait, pressez Enter vos certificat SSL vont être générés dans le dossier /etc/letsencrypt/live/votredomaine.com
Comment installer vos certificats?
Une fois vos certificats générés vous devriez avoir ceci:
[root@web letsencrypt]# ls /etc/letsencrypt/live/web.denisrosenkranz.com/ cert.pem chain.pem fullchain.pem privkey.pem
Pour savoir comment configurer votre serveur HTTP il existe un outils pratique ici:
https://mozilla.github.io/server-side-tls/ssl-config-generator/
Dans le cas d’Apache vous devez configurez votre VirtualHost SSL comme ceci:
SSLEngine on SSLCertificateFile /path/to/signed_certificate SSLCertificateChainFile /path/to/intermediate_certificate SSLCertificateKeyFile /path/to/private/key
Dans mon cas cela ressemble a ceci:
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/web.denisrosenkranz.com/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/web.denisrosenkranz.com/chain.pem SSLCertificateKeyFile /etc/letsencrypt/live/web.denisrosenkranz.com/privkey.pem
Redémarrez Apache et Oh Miracle !
C’est cool non?
N’heistez pas à supporter le projet ici: https://letsencrypt.org/
(9 commentaires)
1 ping
Passer au formulaire de commentaire
text carrier and protective
from a printed book, reproduction
handwritten books were made,
then only a few have reached us
manuscripts significantly
Merci pour le tuto :)
Par contre, j’ai un souci. Sur ma VM j’ai plusieurs domaines, mais je n’ai configuré LE que pour 1 seul domaine.
Et maintenant quand je vais sur un autre demande domaine en ajoutant le https, ca affiche le site qui a bien le https avec le domaine qui est dans la barre d’adresse (du coup c’est pas bon, et ca fait peut etre du duplicate)
Une idée?
Merci
Merci ça fonctionne parfaitement. Enfin un bon tuto sur le ssl gratuit
Merci!!!
super tuto . merci bcp
[…] https://denisrosenkranz.com/tuto-certificat-ssl-gratuit-avec-lets-encrypt/ […]