Accueil > Installer un serveur > Migration de http vers https

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

Pour Debian 9, la documentation officielle (https://certbot.eff.org/lets-encrypt/debianstretch-apache) propose une installation en mode automatique, mais vous n'aurez la main sur rien du tout, donc c'est pas le pied, on va l'installer en mode manuel...

rajouter dans le fichier /etc/apt/sources.list

nano /etc/apt/sources.list

http://deb.debian.org/debian stretch-backports main
apt-get update

installez cerbot

Au cas où, on désinstalle une éventuelle installation existante...


apt-get remove certbot

et on installe

apt install certbot

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"

Et si vous avez des sous-domaines :


certbot certonly --standalone -d mydomain.com -d cdn1.mydomain.com -d cdn2.mydomain.com -d cdn3.mydomain.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

si le fichier /etc/letsencrypt/options-ssl-apache.conf n'existe pas alors créez le, sinon modifiez le
/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 EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
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"

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é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
mohammed lakhlili a écrit le 07-08-2018 :

bonjours, svp, je n'arrive pas à payer les 50 dollars qui correspond à mon certificat ssl et mon hébergement standard cordialement


1 réponse(s) :
https://www.installerunserveur.com a répondu le 09-08-2018 :

Bonjour

Personnellement j'utilise des certificats gratuits...

codialement


Répondre à ce(s) commentaires(s)

Laisser un commentaire

Votre commentaire sera en attente de modération, validation NON automatique

Votre nom (obligatoire) :


Email ou site internet (facultatif) (nécessaire si vous souhaitez être prévenu d'une réponse):


Image/photo (facultatif) (JPG, JPEG, PNG ou GIF) (image de partition concernant le question par exemple):

Javascript doit être activé