Migration de http vers https


Je ne vais pas vous faire une thèse à propos de "pourquoi migrer de http à https", voici simplement comment cela se passe:

Prérequis


Les module SSL (rewrite_module) et rewrite (ssl_module) doivent être activés.
Pour vérifier s’ils sont déjà actifs:

apachectl -M

Loaded Modules:
 ...
 rewrite_module (shared)
 ssl_module (shared)
 ...


Si ce n’est pas le cas, exécutez:


a2enmod ssl
a2enmod rewrite
service apache2 restart


Si vous utilisez Iptables, utilisez ceci dans le script qui va lancer le firewall:


iptables -I INPUT -p tcp --dport 443 -j ACCEPT

Installation de Certbot

Cerbot va gérer les certificats


apt-get install python-certbot-apache -t jessie-backports

Installation du certificat

Il vaut mieux installer 1 certificat par sous domaine, car en cas de modification, déplacement ou suppression de l’un de vos sites, tout est cloisonné et il n’y a pas d’impacts sur les autres certificats.

- Si votre site est accessible sous la forme www.example.com alors n'oubliez pas les 3 www !
- Il est conseiller d'entrer une adresse email valide
- Acceptez les conditions en tapant A et enter
- choisissez Secure - Make all requests redirect to secure HTTPS access

J'ai eu pas mal d'erreurs du type:
Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.
J'ai cru comprendre qu'il faille obtenir un certificat en executant le code ci-dessous en raison d'un changement de fonctionnement de let's encrypt et de leur Cerbot...

exécutez ceci:

certbot certonly --standalone -d example.com -d www.example.com --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2"


certbot certonly --standalone -d example.com -d www.example.com --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2"


vos certificats sont placés dans le répertoire /etc/letsencrypt/live/

Modifiez vos virtualshost

On veut que notre site internet soit accessible en http et en https et on veut rediriger http vers https


<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerAdmin webmaster@localhost
        ServerName www.example.com
        ServerAlias example.com

        DocumentRoot /var/www/blogs/ndd/example.com

        <Directory />
                Require all denied
                Options -Indexes -Includes -ExecCGI -FollowSymlinks
        </Directory>

        <Directory /var/www/blogs/ndd/example.com>
                Require all granted
                Options -Indexes -Includes -ExecCGI +FollowSymlinks
        </Directory>

        ErrorLog /var/log/apache2/site-example.com.log

        # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined

        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf

</VirtualHost>
</IfModule>


<VirtualHost *:80>

        RewriteEngine on
        RewriteCond %{SERVER_NAME} =www.example.com [OR]
        RewriteCond %{SERVER_NAME} =example.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

        ServerAdmin webmaster@localhost
        ServerName www.example.com
        ServerAlias example.com

        DocumentRoot /var/www/blogs/ndd/example.com

        <Directory />
                Require all denied
                Options -Indexes -Includes -ExecCGI -FollowSymlinks
        </Directory>

        <Directory /var/www/blogs/ndd/example.com>
                Require all granted
                Options -Indexes -Includes -ExecCGI +FollowSymlinks
        </Directory>

        ErrorLog /var/log/apache2/site-example.com.log

        # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined

</VirtualHost>

vérifier l'include /etc/letsencrypt/options-ssl-apache.conf

/etc/letsencrypt/options-ssl-apache.conf

# 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-G$
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*;)?(.*)) "; Secure"

Vérifiez la configuration apache

apachectl configtest

syntax OK

redémarrer apache


service apache2 restart

Testez votre certificat

testez votre certificat avec https://www.ssllabs.com/ssltest/index.html:

sslabs.com

Renouvellement des certificats

Le certificat est valable 90 jours seulement, il faudra le renouveler régulièrement

letsencrypt renew

Cert not yet due for renewal

Cela signifie qu'il n'est pas utile de renouveler le certificat pour le moment!

On va donc faire une tâche cron:

nano /etc/crontab

# m   h   dom  mon  dow user  command
  *   *   *    *    0   root   /usr/bin/letsencrypt renew >> /var/log/le-renew.log >/dev/null 2>&1

/etc/init.d/cron restart

Changer toutes vos url

Vérifiez que toutes vos url sont en https

Prévenez Google Webmaster Tools

Dans Google Webmaster Tools, il suffit d'ajouter un nouveau site en https et de changer d'adresse:
- ajouter votre site en https
- demander un changement d'adresse
- renvoyer un sitemap

Révoquer un certificat


letsencrypt revoke --cert-path /etc/letsencrypt/live/<domain_name>/cert.pem

Liens

https://www.memoinfo.fr/tutoriels-linux/configurer-lets-encrypt-apache/
Vos commentaires
Laisser un commentaire
sera en attente de modération, validation NON automatique
Javascript should be activated
Recopiez le code SVP:
pseudoVotre nom (obligatoire)
emailEmail ou site internet (facultatif)
(nécessaire si vous souhaitez être prévenu d'une réponse)
photo, imageImage/photo (facultatif)
(JPG, JPEG, PNG ou GIF)
(image de partition concernant le question par exemple)
Ne pas remplir si vous êtes un humain (anti spam)