Outils pour utilisateurs

Outils du site


linux:ssl (lu 52358 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 [08-12-2016 17:28]
edmc73
linux:ssl [17-12-2023 10:35] (Version actuelle)
edmc73
Ligne 3: Ligne 3:
 Ou comment avoir un **https** pour son site. 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 :
 +  * https://letsencrypt.org/ Fournisseur de certificat (voir plus bas dans la page)
 +  * https://mozilla.github.io/server-side-tls/ssl-config-generator/ un générateur de config pour votre serveur web
 +  * https://www.ssllabs.com/ssltest/ pour tester sir votre site est bien configuré
 +  * https://blog.blaisot.org/letsencrypt-wildcard-part1.html
  
-===== 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**+===== Avec Let's Encrypt =====
  
-Un mail de vérification sera envoyé à l'une (que vous choisissez) des adresses email renseigné pour votre nom de domaine.+**MAJ 2024** 
 +En résumé sur une fresh debian 11
  
-Ensuite, cliquez sur **Certificates Wizard**, choisissez **Web Server SSL/TLS Certificate** dans la liste et fournissez un mot de passe pour la clé privé.+  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
  
-Copier/coller la clé sur votre serveurSuivez les indications.+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 +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
  
-  openssl rsa -in ssl.key -out ssl.key +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-   +Would you be willing, once your first certificate is successfully issued, to 
-Cliquez sur **Continue** et choisissez votre nom de domaine.+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
  
-A la fin vous devez avoir 4 fichiers +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
-  ca.pem  ssl.crt  ssl.key sub.class1.server.ca.pem+Congratulations! You have successfully enabled https://edmc73.com 
 +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 +Subscribe to the EFF mailing list (email: toto@toto.com).
  
-Configurer ensuite apache dans ce style +IMPORTANT NOTES: 
-<code> + - Congratulations! Your certificate and chain have been saved at
-<VirtualHost _default_:443> +   /etc/letsencrypt/live/edmc73.com/fullchain.pem 
-   DocumentRoot /home/httpd/private +   Your key file has been saved at: 
-   ErrorLog /usr/local/apache/logs/error_log +   /etc/letsencrypt/live/edmc73.com/privkey.pem 
-   TransferLog /usr/local/apache/logs/access_log +   Your certificate will expire on 2024-03-16. To obtain a new or 
-   SSLEngine on +   tweaked version of this certificate in the future, simply run 
-   SSLProtocol all -SSLv2 +   certbot again with the "certonly" option. To non-interactively 
-   SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM+   renew *all* of your certificates, run "certbot 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
  
-   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 59: Ligne 96:
 <code> <code>
 # apt update # apt update
-# apt install certbot -t jessie-backports+# apt install certbot 
 +</code>
  
-et la PAF !!+Pour émettre un certificat, letsencrypt doit s’assurer que vous avez bien la main sur les ressources à certifier. Letsencrypt propose 3 types de challenge :
  
-Les paquets supplémentaires suivants seront installés :  +  * HTTP-01 challenge par requête http, le plus couramment utilisé pour les certificats simples 
-  dialog python-acme python-certbot python-cffi-backend python-configargparse python-configobj python-cryptography python-dialog python-dnspython python-enum34 python-funcsigs +  * TLS-SNI-01 challenge par présentation de certificat TLSCe challenge a été désactivé suite à des problèmes de sécurité
-  python-idna python-ipaddress python-mock python-ndg-httpsclient python-openssl python-parsedatetime python-pbr python-pkg-resources python-psutil python-pyasn1 python-pyicu +  * DNS-01 : challenge par requête DNS sur une entrée TXT dans le domaine.
-  python-requests python-rfc3339 python-setuptools python-six python-tz python-urllib3 python-zope.component python-zope.event python-zope.interface +
-Paquets suggérés +
-  python-certbot-apache python-certbot-doc python-acme-doc python-configobj-doc python-cryptography-doc python-cryptography-vectors python-enum34-doc python-funcsigs-doc python-mock-doc +
-  python-openssl-doc python-openssl-dbg python-psutil-doc doc-base python-socks python-setuptools-doc python-ntlm +
-Paquets recommandés : +
-  letsencrypt +
-Les NOUVEAUX paquets suivants seront installés : +
-  certbot dialog python-acme python-certbot python-cffi-backend python-configargparse python-configobj python-cryptography python-dialog python-dnspython python-enum34 python-funcsigs +
-  python-idna python-ipaddress python-mock python-ndg-httpsclient python-openssl python-parsedatetime python-pbr python-psutil python-pyasn1 python-pyicu python-requests python-rfc3339 +
-  python-setuptools python-tz python-urllib3 python-zope.component python-zope.event python-zope.interface +
-Les paquets suivants seront mis à jour : +
-  python-pkg-resources python-six +
-2 mis à jour, 30 nouvellement installés, 0 à enlever et 101 non mis à jour. +
-Il est nécessaire de prendre 2 308 ko dans les archives. +
-Après cette opération, 11,8 Mo d'espace disque supplémentaires seront utilisés. +
-</code>+
  
 +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 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
Ligne 102: Ligne 125:
 </code> </code>
  
 +
 +Dans le cas d'un wildcard avec authentification par DNS
 +
 +<code>
 +# 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
 +</code>
 +C'est à ce moment la que vous allez ajouter une entrée DNS sur votre nom de domaine. Ensuite pressez Enter :)
 +
 +<code>
 +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
 +</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 119: Ligne 201:
  </IfModule>  </IfModule>
 </code> </code>
 +
 +ou bien, variante fourni par letsencrypt
 +
 +<code>
 + <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>
 +
 +</code>
 +
  
 On reload apache On reload apache
Ligne 175: 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+Ce module va écrire une config temporaire dans apache pour que letsencrypt accède facilement à son fichier de vérification
  
-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. 
 <code> <code>
-Running with virtualenvsudo /home/user/.local/share/letsencrypt/bin/letsencrypt --apache --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview +certbot_apache._internal.http_01:Adding a temporary challenge validation Include for name: edmc73.com in: /etc/apache2/sites-enabled/edmc73.com.conf 
-The apache plugin is not working; there may be problems with your existing configuration. + 
-The error wasPluginError('Unable to parse runtime variables',)+certbot_apache._internal.http_01:writing a pre config file with text: 
 + 
 +        RewriteEngine on 
 +        RewriteRule ^/\.well-known/acme-challenge/([A-Za-z0-9-_=]+)$ /var/lib/letsencrypt/http_challenges/$1 [END] 
 + 
 +certbot_apache._internal.http_01:writing a post config file with text: 
 +         <Directory /var/lib/letsencrypt/http_challenges> 
 +            Require all granted 
 +        </Directory> 
 +        <Location /.well-known/acme-challenge> 
 +            Require all granted 
 +        </Location> 
 + 
 +certbot.reverter:Creating backup of /etc/apache2/sites-enabled/edmc73.com.conf 
 + 
 </code> </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 +==== Commandes ==== 
-<code+<note>Partie fonctionnelle</note
-Make sure your web server displays the following content at +La commande qui va bien, pensez bien à associer le certificat pour le nom de domaine + le www.
-http://forum.p2pfr.com/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxxxxxx before continuing:+
  
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+  # ./certbot-auto certonly --webroot -w /home/public_html/p2pfr.com -d p2pfr.com -d www.p2pfr.com --expand
  
-Content-Type header MUST be set to text/plain.+Ne pas oublié un reload d'apache pour que le nouveau certificat soit pris en compte. 
 +  service apache2 reload
  
-If you don't have HTTP server configured, you can run the following +Pour voir la liste des certificats installés sur le système 
-command on the target server (as root):+  ./certbot-auto certificates
  
-mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge +Ensuite pour supprimer un certificat du système 
-cd /tmp/letsencrypt/public_html +  ./certbot-auto delete --cert-name p2pfr.com
-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 okon 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+Si vous changer le path dans votre config apachevous 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 =====
  
-  ./letsencrypt-auto certonly -a webroot --webroot-path /home/public_html/forum.p2pfr.com -d forum.p2pfr.com \ +Maintenant certbot est directement intégré à debian 8 Jessie
-  --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview+
  
-et la magie opère +La tache renew est maintenant un peu plus complexe car elle utilise systemd mais aussi le cron au cas ou systemd serait absent..
-<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: +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**
- - 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>+
  
-Maintenant nous avons 4 fichiers prêt à l'emploi pour configurer notre Apache +<code bash
-<code> +[Unit] 
- <IfModule mod_ssl.c> +Description=Certbot 
-                SSLEngine on +Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html 
-                SSLProtocol all -SSLv2 +Documentation=https://letsencrypt.readthedocs.io/en/latest/ 
-                SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM +[Service] 
-                SSLCertificateFile      /etc/letsencrypt/live/forum.p2pfr.com/cert.pem +Type=oneshot 
-                SSLCertificateKeyFile   /etc/letsencrypt/live/forum.p2pfr.com/privkey.pem +ExecStartPre=/usr/bin/perl -e 'sleep int(rand(3600))' 
-                SSLCertificateChainFile /etc/letsencrypt/live/forum.p2pfr.com/chain.pem +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' 
-                SSLCACertificateFile    /etc/letsencrypt/live/forum.p2pfr.com/fullchain.pem +PrivateTmp=true
-                SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown +
- </IfModule>+
 </code> </code>
  
-On reload apache +===== Config apache pour centraliser les acme-challenge =====
-  service apache2 reload+
  
-et voici le résultat +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 domaineOui 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.
-{{:linux:ssl_forum.p2pfr.com.jpg?nolink|}}+
  
-Pour renouveler le certificatil suffit de relancer la même dernière commande.+Nous allons créer une config apache qui va centraliser toutes ces demandes dans un répertoire uniquepar exemple **/var/www/letsencrypt**
  
-Le certificat est valide 90 jours, donc on peut lancer cette commande en automatique tous les 88 jours par exemple via le cron.+Créez le répertoire **/var/www/letsencrypt** 
 +  mkdir /var/www/letsencrypt
  
-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.+Créez le fichier **/etc/apache2/conf-available/letsencrypt.conf** 
 +<code apache> 
 +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> 
 +</code>
  
-N'oubliez pas d'ajouter l'option ''--renew-by-default'' +  a2enconf letsencrypt 
-<code bash> +  systemctl reload apache2
-#!/bin/bash+
  
-if test `find /etc/letsencrypt/live/forum.p2pfr.com/cert.pem -mtime +88` +et maintenant la commande certbot a utiliser 
-then +  certbot certonly --webroot -w /var/www/letsencrypt/ -d edmc73.com 
-  /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 +Ce sera le même répertoire pour tous les domaines de votre serveur
-fi+ 
 +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> </code>
  
-Pour avoir un peu d'aide 
-  ./letsencrypt-auto --help all 
  
 +===== Alternative à certbot =====
  
-====== Retour d'expérience ====== +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 besoinalors vous allez aimer **acme.sh**
-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 avant9 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 +https://github.com/Neilpang/acme.sh
-  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'+
  
 +  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.
  
-Je lance le script tout seul +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 )
-  ./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: +===== Let'encrypt sur centos avec nginx en reverse proxy =====
- - 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'Encrypt again. +
- - If you like Let's Encrypt, please consider supporting our work by:+
  
-   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate +en gros suivre ce guide officiel => https://certbot.eff.org/lets-encrypt/centosrhel7-nginx
-   Donating to EFF:                    https://eff.org/donate-le +
-</code>+
  
-Par contre il faut quand même recharger apache +  yum install python2-certbot-nginx
-  service apache2 reload +
-Sinon le nouveau certificat n'est pas disponible+
  
-===== 2ème retour ===== +Pour ne pas toucher à ma conf nginx j'ai lancé la commande suivante 
-let's encrypt a changé de script.+  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.
  
-Après avoir réinstallé leur nouveau script **certbot**, la nouvelle commande est un peu plus simple +Les certificats se trouvent dans /etc/letsencrypt/live/xxxx
-<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: +Pour vérifierlancez simplement la commande 
- - Congratulations! Your certificate and chain have been saved at +  certbot certificates
-   /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 futuresimply run Certbot again. +
- - If you like Certbot, please consider supporting our work by:+
  
-   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate +Exemple de conf nginx 
-   Donating to EFF:                    https://eff.org/donate-le+<code 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/;
 +           }
 +}
 </code> </code>
  
-La première fois, un email vous sera demandé ainsi qu'une validation de la licence, des infos seront stocké dans /etc/letsencrypt 
  
-Ne pas oublié un reload d'apache pour que le nouveau certificat soit pris en compte. +===== Avec StartSSL =====
-  service apache2 reload+
  
 +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.1481214495.txt.gz · Dernière modification: 08-12-2016 17:28 de edmc73