Outils pour utilisateurs

Outils du site


linux:ssl (lu 52108 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:ssl [09-01-2020 10:57]
edmc73
linux:ssl [17-12-2023 10:35] (Version actuelle)
edmc73
Ligne 10: Ligne 10:
  
  
-===== 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**+===== Avec Let's Encrypt =====
  
-Toujours dans **Validations Wizard** vous devez faire vérifier votre nom de domaine en choisissant **Domain Name Validation**+**MAJ 2024** 
 +En résumé sur une fresh debian 11
  
-Un mail de vérification sera envoyé à l'une (que vous choisissezdes adresses email renseigné pour votre nom de domaine.+  apt install certbot python3-certbot-apache 
 +   
 +<code> 
 +# certbot --apache -d edmc73.com 
 +Saving debug log to /var/log/letsencrypt/letsencrypt.log 
 +Plugins selected: Authenticator apache, Installer apache 
 +Enter email address (used for urgent renewal and security notices) 
 + (Enter 'c' to cancel): toto@toto.com
  
-Ensuite, cliquez sur **Certificates Wizard**, choisissez **Web Server SSL/TLS Certificate** dans la liste et fournissez un mot de passe pour la clé privé.+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 +Please read the Terms of Service at 
 +https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must 
 +agree in order to register with the ACME server. Do you agree? 
 +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 +(Y)es/(N)o: Y
  
-Copier/coller la clé sur votre serveurSuivez les indications.+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 +Would you be willing, once your first certificate is successfully issued, to 
 +share your email address with the Electronic Frontier Foundation, a founding 
 +partner of the Let's Encrypt project and the non-profit organization that 
 +develops Certbot? We'd like to send you email about our work encrypting the web, 
 +EFF news, campaigns, and ways to support digital freedom. 
 +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 +(Y)es/(N)o: Y 
 +Account registered. 
 +Requesting a certificate for edmc73.com 
 +Performing the following challenges: 
 +http-01 challenge for edmc73.com 
 +Enabled Apache rewrite module 
 +Waiting for verification... 
 +Cleaning up challenges 
 +Created an SSL vhost at /etc/apache2/sites-available/000-default-le-ssl.conf 
 +Enabled Apache socache_shmcb module 
 +Enabled Apache ssl module 
 +Deploying Certificate to VirtualHost /etc/apache2/sites-available/000-default-le-ssl.conf 
 +Enabling available site: /etc/apache2/sites-available/000-default-le-ssl.conf 
 +Enabled Apache rewrite module 
 +Redirecting vhost in /etc/apache2/sites-enabled/000-default.conf to ssl vhost in /etc/apache2/sites-available/000-default-le-ssl.conf
  
-  openssl rsa -in ssl.key -out ssl.key +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-   +Congratulations! You have successfully enabled https://edmc73.com 
-Cliquez sur **Continue** et choisissez votre nom de domaine.+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 +Subscribe to the EFF mailing list (email: toto@toto.com).
  
-A la fin vous devez avoir 4 fichiers +IMPORTANT NOTES: 
-  ca.pem  ssl.crt  ssl.key sub.class1.server.ca.pem+ - 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 certificate will expire on 2024-03-16To obtain a new or 
 +   tweaked version of this certificate in the future, simply run 
 +   certbot again with the "certonly" optionTo non-interactively 
 +   renew *all* of your certificates, run "certbot renew" 
 + - If you like Certbot, please consider supporting our work by:
  
-Configurer ensuite apache dans ce style +   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate 
-<code> +   Donating to EFF:                    https://eff.org/donate-le
-<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> 
 </code> </code>
 +On se retrouve donc avec un nouveau fichier de config dans apache tout configuré pour que ça fonctionne en https.
 +
 +-------------------------
  
-===== 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 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
Ligne 146: Ligne 176:
 </code> </code>
  
 +<note warning>Attention, la méthode par DNS a une validation manuel et ne permet pas facilement d'être renouvelé automatiquement
 +
 +Vous devrez retaper la commande suivante pour renouveler le certificat à la main.
 +  # certbot certonly --manual -d *.edmc73.com
 +
 +Voir la doc: https://certbot.eff.org/docs/using.html#pre-and-post-validation-hooks\\
 +Et un tuto pour automatiser avec l'api ovh: https://buzut.net/certbot-challenge-dns-ovh-wildcard/
 +</note>
  
 Tous les fichiers sont dans **/etc/letsencrypt** Tous les fichiers sont dans **/etc/letsencrypt**
Ligne 259: Ligne 297:
  
  
-<note warning>Ce qui suit est obsolète, mais je le garde pour archive</note> +==== module apache ====
-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 +Dans le cas d'un site web en python ou autre animal du genre ou on doit utiliser un proxy et donc bref, ça devient chiant.
-  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: +  certbot --apache -d edmc73.com -d www.edmc73.com
-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. +Ce module va écrire une config temporaire dans apache pour que letsencrypt accède facilement à son fichier de vérification
-Tout ça pour lancer un script dans un environnement virtuel de python qui se résume par un échec. +
-<code> +
-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',+
-</code> +
- +
-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 
 <code> <code>
-Make sure your web server displays the following content at +certbot_apache._internal.http_01:Adding a temporary challenge validation Include for name: edmc73.com in: /etc/apache2/sites-enabled/edmc73.com.conf
-http://forum.p2pfr.com/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxxxxxx before continuing:+
  
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+certbot_apache._internal.http_01:writing a pre config file with text:
  
-Content-Type header MUST be set to text/plain.+        RewriteEngine on 
 +        RewriteRule ^/\.well-known/acme-challenge/([A-Za-z0-9-_=]+)$ /var/lib/letsencrypt/http_challenges/$1 [END]
  
-If you don't have HTTP server configured, you can run the following +certbot_apache._internal.http_01:writing a post config file with text: 
-command on the target server (as root):+         <Directory /var/lib/letsencrypt/http_challenges> 
 +            Require all granted 
 +        </Directory> 
 +        <Location /.well-known/acme-challenge> 
 +            Require all granted 
 +        </Location>
  
-mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge +certbot.reverter:Creating backup of /etc/apache2/sites-enabled/edmc73.com.conf
-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()" +
-</code>+
  
-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 
-<code> 
-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. 
 </code> </code>
  
-Maintenant nous avons 4 fichiers prêt à l'emploi pour configurer notre Apache 
-<code> 
- <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> 
-</code> 
  
-On reload apache 
-  service apache2 reload 
- 
-et voici le résultat 
-{{:linux:ssl_forum.p2pfr.com.jpg?nolink|}} 
- 
-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'' 
-<code bash> 
-#!/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 
-</code> 
- 
-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 :) 
-<code> 
-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 
-</code> 
- 
-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 
-<code> 
-# ./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 
- 
-</code> 
  
-La première fois, un email vous sera demandé ainsi qu'une validation de la licence, des infos seront stocké dans /etc/letsencrypt 
  
 ==== Commandes ==== ==== Commandes ====
Ligne 444: Ligne 346:
 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 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   certbot renew --dry-run
 +  
 ===== Avec certbot de debian ===== ===== Avec certbot de debian =====
  
Ligne 489: Ligne 392:
   certbot certonly --webroot -w /var/www/letsencrypt/ -d edmc73.com   certbot certonly --webroot -w /var/www/letsencrypt/ -d edmc73.com
 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 /.well-known/acme-challenge !
 +  ProxyPass / http://127.0.0.1:6000/
 +  ProxyPassReverse / http://127.0.0.1:6000/
 +</code>
 +
 +
 ===== Alternative à certbot ===== ===== Alternative à certbot =====
  
Ligne 545: Ligne 458:
 </code> </code>
  
 +
 +===== 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
 +<code>
 +<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>
 +</code>
linux/ssl.1578563872.txt.gz · Dernière modification: 09-01-2020 10:57 de edmc73