Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
linux:ssl [19-03-2020 15:19] edmc73 |
linux:ssl [24-06-2021 16:20] edmc73 |
||
---|---|---|---|
Ligne 10: | Ligne 10: | ||
- | ===== Avec StartSSL ===== | ||
- | Aller sur ce site => http:// | ||
- | |||
- | 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/ | ||
- | |||
- | 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 | ||
- | |||
- | Configurer ensuite apache dans ce style | ||
- | < | ||
- | < | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | |||
- | | ||
- | | ||
- | | ||
- | | ||
- | "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \" | ||
- | </ | ||
- | </ | ||
===== Avec Let's Encrypt ===== | ===== Avec Let's Encrypt ===== | ||
Ligne 148: | Ligne 111: | ||
<note warning> | <note warning> | ||
- | Vous devrez retaper la commande | + | Vous devrez retaper la commande |
# certbot certonly --manual -d *.edmc73.com | # certbot certonly --manual -d *.edmc73.com | ||
- | Pour renouveler le certificat | ||
- | Voir la doc: https:// | + | Voir la doc: https:// |
+ | Et un tuto pour automatiser avec l'api ovh: https:// | ||
</ | </ | ||
Ligne 267: | Ligne 230: | ||
- | <note warning> | ||
- | 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:// | ||
- | 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' | ||
- | ./ | ||
- | Cette commande lance l' | ||
- | Tout ça pour lancer un script dans un environnement virtuel de python qui se résume par un échec. | ||
- | < | ||
- | Running with virtualenv: sudo / | ||
- | The apache plugin is not working; there may be problems with your existing configuration. | ||
- | The error was: PluginError(' | ||
- | </ | ||
- | |||
- | 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' | ||
- | |||
- | ./ | ||
- | --server https:// | ||
- | |||
- | 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:// | ||
- | |||
- | 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 / | ||
- | cd / | ||
- | printf " | ||
- | # run only once per server: | ||
- | $(command -v python2 || command -v python2.7 || command -v python2.6) -c \ | ||
- | " | ||
- | SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map = {'': | ||
- | s = BaseHTTPServer.HTTPServer(('', | ||
- | 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 | ||
- | |||
- | ./ | ||
- | --server https:// | ||
- | |||
- | et la magie opère | ||
- | < | ||
- | Updating letsencrypt and virtual environment dependencies....... | ||
- | Running with virtualenv: sudo / | ||
- | |||
- | IMPORTANT NOTES: | ||
- | - Congratulations! Your certificate and chain have been saved at | ||
- | / | ||
- | | ||
- | the future, simply run Let's Encrypt again. | ||
- | </ | ||
- | |||
- | Maintenant nous avons 4 fichiers prêt à l' | ||
- | < | ||
- | < | ||
- | SSLEngine on | ||
- | SSLProtocol all -SSLv2 | ||
- | SSLCipherSuite ALL: | ||
- | SSLCertificateFile | ||
- | SSLCertificateKeyFile | ||
- | SSLCertificateChainFile / | ||
- | SSLCACertificateFile | ||
- | SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown | ||
- | </ | ||
- | </ | ||
- | |||
- | 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' | ||
- | <code bash> | ||
- | #!/bin/bash | ||
- | |||
- | if test `find / | ||
- | then | ||
- | / | ||
- | fi | ||
- | </ | ||
- | |||
- | Pour avoir un peu d'aide | ||
- | ./ | ||
- | |||
- | |||
- | ====== Retour d' | ||
- | Après 90 jours, c'est donc le moment fatidique de mettre à jour le certificat. Pour info nous recevons un mail de notification d' | ||
- | En lançant la commande | ||
- | / | ||
- | |||
- | J' | ||
- | 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: ' | ||
- | |||
- | |||
- | Je lance le script tout seul | ||
- | ./ | ||
- | Updating letsencrypt and virtual environment dependencies....... | ||
- | Running with virtualenv: / | ||
- | No installers seem to be present and working on your system; fix that or try running letsencrypt with the " | ||
- | |||
- | Je lance avec le " | ||
- | < | ||
- | Updating letsencrypt and virtual environment dependencies....... | ||
- | Running with virtualenv: / | ||
- | Use of --agree-dev-preview is deprecated. | ||
- | |||
- | IMPORTANT NOTES: | ||
- | - Congratulations! Your certificate and chain have been saved at | ||
- | / | ||
- | | ||
- | the future, simply run Let's Encrypt again. | ||
- | - If you like Let's Encrypt, please consider supporting our work by: | ||
- | |||
- | | ||
- | | ||
- | </ | ||
- | |||
- | 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**, | ||
- | < | ||
- | # ./ | ||
- | Checking for new version... | ||
- | Requesting root privileges to run certbot... | ||
- | / | ||
- | |||
- | IMPORTANT NOTES: | ||
- | - Congratulations! Your certificate and chain have been saved at | ||
- | / | ||
- | | ||
- | the future, simply run Certbot again. | ||
- | - If you like Certbot, please consider supporting our work by: | ||
- | |||
- | | ||
- | | ||
- | |||
- | </ | ||
- | La première fois, un email vous sera demandé ainsi qu'une validation de la licence, des infos seront stocké dans / | ||
==== Commandes ==== | ==== Commandes ==== | ||
Ligne 452: | Ligne 252: | ||
Si vous changer le path dans votre config apache, vous pouvez modifier la config letsencrypt à la main dans **/ | Si vous changer le path dans votre config apache, vous pouvez modifier la config letsencrypt à la main dans **/ | ||
certbot renew --dry-run | certbot renew --dry-run | ||
+ | | ||
===== Avec certbot de debian ===== | ===== Avec certbot de debian ===== | ||
Ligne 497: | Ligne 298: | ||
certbot certonly --webroot -w / | certbot certonly --webroot -w / | ||
Ce sera le même répertoire pour tous les domaines de votre serveur. | Ce sera le même répertoire pour tous les domaines de votre serveur. | ||
+ | |||
+ | Si vous utilisez un proxy pass, attention à exclure le chemin de letsencrypt comme ceci | ||
+ | |||
+ | <code apache> | ||
+ | ProxyPass / | ||
+ | ProxyPass / http:// | ||
+ | ProxyPassReverse / http:// | ||
+ | </ | ||
+ | |||
+ | |||
===== Alternative à certbot ===== | ===== Alternative à certbot ===== | ||
Ligne 553: | Ligne 364: | ||
</ | </ | ||
+ | |||
+ | ===== Avec StartSSL ===== | ||
+ | |||
+ | Aller sur ce site => http:// | ||
+ | |||
+ | 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/ | ||
+ | |||
+ | 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 | ||
+ | |||
+ | Configurer ensuite apache dans ce style | ||
+ | < | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \" | ||
+ | </ | ||
+ | </ |