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:
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
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
# 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
syntax OK
redémarrer apache
service apache2 restart
Testez votre certificat
testez votre certificat avec https://www.ssllabs.com/ssltest/index.html:
Renouvellement des certificats
Le certificat est valable 90 jours seulement, il faudra le renouveler régulièrement
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:
# 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
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) :
Bonjour
Personnellement j'utilise des certificats gratuits...
codialement
Répondre à ce(s) commentaires(s)