Avec la généralisation du https par les navigateurs, les sites doivent avoir un certificat SSL.
Si vous utilisez MAMP ou MAMP Pro comme serveur local pour développer vos sites, vous pouvez lui demander de générer un “certificat SSL auto-signé” pour chacun d’eux. Toutefois, les navigateurs identifient qu’il s’agit d’un certificat auto-signé et affichent une alerte ou une page d’avertissement plutôt anxiogène.
Heureusement, MacOS X permet de “forcer” l’approbation du certificat auto-signé afin d’accéder au site sans avoir à subir ces avertissements. Ce tutoriel vidéo vous explique en 5 minutes le pourquoi et le comment.
Bonjour,
Ce court tuto pour répondre à une problèmatique qui revient assez souvent lorsqu’on crée un site en local avec Mamp ou Mamp Pro et qui concerne les certificats SSL auto-signés.
Bien qu’ayant généré le certificat SSL, lorsqu’on accède au site via un navigateur, on obtient une alerte ou une page assez anxiogène nous informant que la connexion n’est pas privée et évoquant même des individus malveillants tentant de subtiliser nos précieuses informations personnelles.
Dans le cas présent, s’agissant d’un site en local, c’est-à-dire un site qui est hébergé sur notre propre ordinateur, ce type de message n’est pas justifié. Mais le navigateur n’est pas en mesure de détecter cette configuration, il se fait ‘gruger’ et nous affiche donc cette alerte.
Dans les faits, qui plus est, le navigateur se trompe : la connexion est bien ‘privée’, c'est-à-dire que les flux de données échangés entre notre site local et le navigateur sont bien cryptés, on est en https://.
En revanche, là où il a raison, c’est que le certificat ne peut pas être ‘certifié’ par une autorité de certification. C'est la définition même d’un certificat ‘auto-signé’.
C’est comme si, lors d’un contrôle d’identité, l’agent de police n’avait que votre seule parole pour vous croire lorsque vous lui dites que vous n’avez pas vos papiers sur vous, mais que vous vous appelez Jacques Dupond. Faute d’une pièce d’identité certifiée, l’agent n’est pas en mesure de savoir si vous êtes bien celui que vous déclarez être.
C'est la même chose avec un certificat SSL ‘auto-signé’.
Nous allons donc en venir au réel sujet de cette vidéo et faire en sorte de ne plus afficher ce type de message lorsqu’on accède à notre site en local.
Pour cela, on va utiliser un logiciel fourni en standard avec MacOS X : il s'agit du ‘Trousseau d'accès’, que vous trouverez dans le dossier “Applications”… puis le dossier “Utilitaires”…
Voici le “Trousseau d'accès”… et on le lance.
Là, assurez-vous de cliquer sur ‘Certificats’ dans la rubrique ‘Catégories’ afin de réduire le contenu des éléments listés aux seuls certificats.
Dans la rubrique ‘Trousseaux’, vous pouvez sélectionnez soit “Session”, soit “Système” :
Le but de l’opération maintenant est d’ajouter au Trousseau notre certificat SSL et d’imposer sa validité.
Il nous faut donc le certificat en lui-même. Pour cela, on va le récupérer…
…dans Mamp.
On sélectionne le site concerné… et on accède à l’onglet SSL…
Là, on clique sur l’icône de dossier des fichiers de certificat “.crt”
On sélectionne le certificat du site concerné et on le fait glisser dans la fenêtre du “Trousseau d'accès”.
Dans le Trousseau d‘accès, je peux alors double-cliquer sur le certificat qu‘on vient d‘ajouter afin d‘en réveler le contenu et, surtout, la fonctionnalité qui nous intéresse : “Se fier”… que je déroule en cliquant sur le petit triangle.
Et là, je vais changer la valeur “Réglages par défaut”, que je remplace par “Toujours approuver”.
Je ferme la fenêtre du certificat…
Je valide la modification en saisissant mon mot de passe utilisateur… et je peux fermer le Trousseau d’accès.
Maintenant, si je rafraîchis la fenêtre du navigateur…
Tadaam ! Le site s’affiche désormais sans alerte et avec le petit cadenas tant recherché !
Voilà ! J'espère que ce petit tuto vous a plu et on se retrouve lors d’une prochaine vidéo.
Salut !
Dans un article précédent, je vous ai montré comment basculer votre site https sans avoir recours à un plugin supplémentaire.
Suite à ce basculement votre site est désormais accessible par défaut en https.
Toutefois, rien n'empêche un utilisateur d'y accéder en non sécurisé. Pour cela, il lui suffit de saisir explicitement l'adresse de votre site en omettant le "s" : http://votre-site.com au lieu de https://votre-site.com.
Voyons comment forcer les connexions en https et déjouer la tentative de cet utilisateur.
Avant d'aller plus loin, commencez par vérifier si votre site est concerné : il se peut qu’un tiers (votre hébergeur ou un prestataire) ait déjà configuré votre site en conséquence lors de l’installation du certificat ssl.
Pour vérifier si votre serveur force ou non l’accès en https, saisissez l’url de votre site dans la barre d'adresse du navigateur et ajoutez “/?” :
http://reskator.fr/?
remplacez "reskator.fr" par le nom et l'extension de votre site.
L’ajout de /? nous permet de contourner la fonctions d’historique/cache du navigateur. Celui-ci ayant trop souvent tendance à “corriger” de lui-même la saisie avec ce qu’il a en mémoire…).
Si la page s’affiche sans le cadenas, si l’url n’a pas été remplacée, c’est donc la preuve que votre site est toujours accessible en non sécurisé. Il va falloir y remédier.
Si la page s’affiche en https (il y a le petit cadenas), cela signifie que le serveur a détecté la tentative d’accès non sécurisé et l’a corrigée.
Vous n’avez rien à faire, vous pouvez interrompre votre lecture ici.
Vous êtes toujours là ? C’est donc que vous voulez savoir comment forcer l’accès https. Alors allons-y !
Pour remédier au problème, nous devons accéder au serveur via un logiciel FTP afin de modifier 2 fichiers sur votre hébergement : assurez-vous de disposez d'un logiciel FTP, et des identifiants de votre compte FTP
(ils vous ont été fournis par votre hébergeur).
Si vous ne vous sentez pas de faire l’intervention, je vous propose de la faire pour vous, en toute sécurité,
» pour 35 € « !
Dans l’absolu, cette directive sera redondante avec la mise en place des redirections https au niveau du serveur, mais elle ne coûte rien et s’appliquera même si le .htaccess était désactivé pour une raison ou une autre.
Cette directive WordPress a pour fonction de forcer le https pour toute la partie administrative (back-office) et pour la page de connexion (login.php).
Connectez-vous en FTP à votre hébergement, recherchez le fichier wp-config.php situé à la racine de votre site et ouvrez-le afin de l’éditer.
Vers la fin du fichier, repérez la ligne :
/* That's all, stop editing! Happy blogging. */
Comme nous y invite le texte (ici en anglais), nous allons ajouter notre directive AVANT
/* Force SSL for admin and login */ define( 'FORCE_SSL_ADMIN', true ); /* That's all, stop editing! Happy blogging. */
Si vous n’avez pas la ligne /* That's all, stop editing! Happy blogging. */,
ajoutez le define( 'FORCE_SSL_ADMIN', true ); AVANT
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}
require_once( ABSPATH . 'wp-settings.php' );
Ce qui donnerait :
/* Force SSL for admin and login */
define( 'FORCE_SSL_ADMIN', true );
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}
required_once( ABSPATH . 'wp-settings.php' );
Enregistrez et fermez le fichier wp-config.php.
Nous nous intéressons ici qu’aux hébergements utilisant un serveur Apache (actuellement la plus grande majorité des installations).
Si votre hébergement utilise un serveur nginx, voyez plus bas.
Attention : il n’y a pas de méthode universelle, cela dépend de votre hébergeur. Je vous propose ci-dessous quelques méthodes d’hébergeurs avec qui j’ai eu l’occasion de travailler. Si vous doutez ou que votre hébergeur n’est pas cité, reportez-vous à la FAQ de votre hébergeur.
Connectez-vous en FTP à votre hébergement et recherchez le fichier .htaccess situé à la racine de votre site.
Avant de faire quoi que ce soit, dupliquez ce fichier et nommez-le .htaccess-bck afin d’avoir une sauvegarde.
Ceci fait, ouvrez le fichier .htaccess afin de l'éditer.
Repérez le bloc d'instructions ajouté par WordPress :
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Nous devons ajouter les instructions concernant le https AVANT le bloc WordPress.
Dans les propositions ci-dessous, repérez celle qui concerne votre hébergeur, copiez-la et collez-la une ligne avant le # BEGIN WordPress afin d’obtenir quelque chose comme ceci :
# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# End Force HTTPS
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase / RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Ne recopiez pas le code ci-dessus, il s’agit d'un exemple : les lignes colorées sont à adapter en fonction de votre hébergeur, voir ci-après.
Après avoir enregistré le fichier .htaccess, testez votre site.
Faites une tentatives d’accès non sécurisée et vérifiez qu'elle est redirigée en https. Vérifiez ensuite que le site se comporte normalement.
En cas de problème, vérifiez que vous avez correctement copié le code correspondant à votre hébergeur, qu’il n’y a pas de caractères parasites, etc.
Si le problème persiste, supprimez le code que vous venez d'ajouter et enregistrez. Vérifiez que le site fonctionne.
Si le site ne fonctionne toujours pas, supprimez le fichier .htaccess et rétablissez le fichier précédemment sauvegardé : renommez le fichier .htaccess-bck en .htaccess afin de revenir à la configuration initiale.
Si vous ne vous sentez pas de faire l’intervention, je vous propose de la faire pour vous, en toute sécurité,
» pour 35 € « !
Si vous utilisez Local by Flywheel en serveur Apache, vous pouvez également utiliser ce code.
Copiez/collez le code ci-dessous dans le fichier .htaccess, enregistrez et fermez, puis testez le fonctionnement du site.
# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# End Force HTTPS
Si une erreur de boucle survient, remplacez la ligne :
RewriteCond %{HTTP:X-Forwarded-Proto} !https
par
RewriteCond %{HTTPS} off
Copiez/collez le code ci-dessous dans le fichier .htaccess, enregistrez et fermez, puis testez le fonctionnement du site.
# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} !on
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# End Force HTTPS
Si vous utilisez LAMP, vous pouvez également utiliser cette méthode.
Copiez/collez le code ci-dessous dans le fichier .htaccess, enregistrez et fermez, puis testez le fonctionnement du site.
# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=On
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# End Force HTTPS
Copiez/collez le code ci-dessous dans le fichier .htaccess, remplacez VOTRE.NOM.DE.DOMAINE par votre site internet, enregistrez et fermez, puis testez le fonctionnement du site.
# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://VOTRE.NOM.DE.DOMAINE/$1 [R,L]
</IfModule>
# End Force HTTPS
Copiez/collez le code ci-dessous dans le fichier .htaccess, enregistrez et fermez, puis testez le fonctionnement du site.
# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
# End Force HTTPS
Rien ne fonctionne ? Essayez avec les instructions ci-dessous.
Copiez/collez le code ci-dessous dans le fichier .htaccess, enregistrez et fermez, puis testez le fonctionnement du site.
Si la redirection https ne s'effectue toujours pas, rétablissez la configuration initiale, puis consultez la FAQ de votre hébergeur.
# Begin Force HTTPS
<IfModule mod_rewrite.c>
RewriteCond %{ENV:HTTPS} !=On
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# End Force HTTPS
Pour un hébergement sous serveur nginx, modifiez la configuration en ajoutant une directive server selon l'exemple ci-dessous.
Directive que vous placez à l'intérieur de la section html { … }.
Bien sûr, remplacez les exemple.com par votre nom de domaine.
html {
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name exemple.com www.exemple.com;
return 301 https://$server_name$request_uri;
}
# autres directives existantes dans votre config...
}
Si vous ne vous sentez pas de faire l’intervention, je vous propose de la faire pour vous, en toute sécurité,
» pour 35 € « !