webleads-tracker

WordPress & Référencement naturel
Mes servicesWordPress - Référencement
Hébergement WordPress
Vous êtes ici : SeoMix » WordPress » WordPress en général » Sécurisez l’administration de WordPress avec SSL

Sécurisez l’administration de WordPress avec SSL

Tous les jours, vous entendez parler de sites piratés, de données espionnées sur les réseaux, de mots de passe volés. La sécurité est devenue un aspect inévitable de la gestion d'un site, quelles que soient sa taille ou son audience.

Il existe un certain nombre de techniques permettant de protéger votre site (la première étant la mise à jour régulière). Aujourd'hui, je vous présente l'une d'entre d'elles, SSL.

Description du protocole SSL

Le protocole SSL sert à faire passer une connexion réseau dans un canal sécurisé. Il est souvent associé à HTTP pour former le protocole HTTPS, utilisé pour sécuriser l'accès à un site web.

SSL a trois buts spécifiques:

  • s'assurer que l'on communique bien avec le serveur indiqué (authentification)
  • empêcher quiconque d'observer les données échangées (confidentialité)
  • détecter la modification des données entre le client et le serveur (intégrité)

SSL sert donc principalement à se protéger des attaques man in the middle (lorsque quelqu'un se place entre le navigateur et le serveur). Ce type d'attaque est assez facile à monter sur des réseaux WiFi, ou des réseaux publics (conférences, Starbucks, etc). Ce protocole ne vous protègera pas de vulnérabilités comme XSS ou les injections SQL.

WordPress SSL Admin

Sécuriser l'administration de WordPress en SSL

De nombreux sites n'intègrent pas SSL, généralement pour deux raisons: un certificat SSL coûte cher, et les connexions sécurisées sont lentes. De nos jours, les progrès des logiciels et algorithmes ont rendu les connexions très rapides et moins coûteuses en processeur. Et je vais vous présenter une méthode gratuite pour obtenir un certificat, et sécuriser ainsi vos pages d'administration.

Protégez l'administration de WordPress

Prérequis

Mise en situation: vous désirez sécuriser la partie admin de votre site, mais le reste du site n'est pas critique, vos visiteurs peuvent consulter le site sans avoir besoin d'un haut niveau de sécurité.

  • Vous avez accès à une ligne de commande Mac OS ou Linux.
  • OpenSSL est installé sur la machine sur laquelle vous effectuez les modifications.
  • Vous pouvez modifier les virtual hosts de votre server Apache.

Création du certificat SSL

Nous allons tout d'abord créer le certificat SSL qui authentifiera votre connexion. Ces certificats sont généralement achetés auprès d'une autorité de certification, qui vous fournira (contre 100 à 500$ par an) un certificat reconnu par la plupart des navigateurs. Ici, vous n'avez pas besoin d'une autorité de certification, car peu d'utilisateurs auront accès à la partie admin de votre site. Vous pouvez donc générer votre certificat gratuitement!

Créez une clef RSA pour votre serveur:

openssl genrsa -out server.key 2048

Il est recommandé (pour le moment) d'utiliser des clefs de 2048 bits, qui sont assez solides.

Ouvrez une ligne de commande, et tapez la commande en gras pour créer une certificate signing request:

openssl req -new -key server.key -out server.csr

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:PACA
Locality Name (eg, city) []:Antibes
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Entreprise machin
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:www.entreprise-machin.com
Email Address []:admin@entreprise-machin.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Pour un site, seul le Common Name est important. Il doit correspondre exactement au nom de domaine de votre site.

Signez cette CSR avec votre clef pour créer le certificat:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Signature ok
subject=/C=FR/ST=PACA/L=Antibes/O=Entreprise machin/CN=www.entreprise-machin.com/emailAddress=admin@entreprise-machin.com
Getting Private key

Voilà, vous avez un certificat utilisable pour votre site.

Copiez le certificat (server.crt) ainsi que la clef (server.key) dans un dossier pour Apache:

sudo mkdir -p /usr/local/apache2/conf/certs/

sudo cp server.key /usr/local/apache2/conf/certs/

sudo cp server.crt /usr/local/apache2/conf/certs/

 Configuration de WordPress

En vous basant sur le codex WordPress, ajoutez une directive à votre wp-config.php:

define('FORCE_SSL_ADMIN', true);

(à placer avant la directive "require_once(ABSPATH . 'wp-settings.php');")

l'option FORCE_SSL_LOGIN n'est pas assez sécurisée car seule l'URL du formulaire de login est en HTTPS. La page de login elle-même ne sera pas servie par SSL.

De plus, FORCE_SSL_ADMIN active le secure flag des cookies de session, qui ne seront donc envoyés que par une connexion sécurisée (ne vous étonnez donc pas si vous n'êtes plus connecté en accédant au site par HTTP).

Configuration d'Apache

Activez maintenant SSL dans Apache:

sudo a2enmod ssl

Voici le contenu de la configuration Apache à ajouter

<VirtualHost *:80>

ServerName www.entreprise-machin.com
DocumentRoot /home/geo/site
<Directory /home/geo/site>
Options -Indexes -FollowSymLinks +MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
RedirectMatch ^/wp-login.php(.*)$ https://www.entreprise-machin.com/wp-login.php$1
RedirectMatch ^/wp-admin/(.*)$ https://www.entreprise-machin.com/wp-admin/$1
</VirtualHost>

<VirtualHost *:443>
ServerName www.entreprise-machin.com
DocumentRoot /home/geo/site
<Directory /home/geo/site/>
Options -Indexes -FollowSymLinks +MultiViews
AllowOverride None
Allow from all
</Directory>

SSLEngine on
SSLCertificateFile /usr/local/apache2/conf/certs/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/certs/server.key

# Disable SSLv2
SSLProtocol all -SSLv2
# Choose cipher suites
SSLHonorCipherOrder On
# Use only strong authentication and ciphers; prioritise RC4 to mitigate BEAST
SSLCipherSuite RC4-SHA:HIGH:!ADH:-3DES

</VirtualHost>

On crée deux virtual hosts quasiment identiques, l'un pour la connexion normale, non sécurisée, et l'autre pour la connexion par SSL.

La version non sécurisée comporte des redirections vers la version sécurisée pour wp-login.php et wp-admin. Ces directives sont redondantes avec FORCE_SSL_ADMIN, qui se charge directement des redirections, mais la gestion de SSL étant plutôt le rôle d'Apache, on se prémunit d'éventuelles surprises erreurs de configuration de WordPress.

La version sécurisée contient les directives activant SSL, ainsi que trois autres commandes:

  • l'une pour désactiver SSLv2 (vieille version du protocole qui n'est plus recommandée actuellement). Si vous ne vous connectez qu'avec Firefox, Opera ou Internet Explorer (>8) vous pouvez ajouter "-SSLv3" pour n'utiliser que TLSv1, la version la plus récente du protocole (qui n'est toujours pas supportée par Chrome).
  • la seconde commande force le client (navigateur) à utiliser l'algorithme que le serveur lui indique(par défaut, c'est le client qui choisit, et souvent, il choisit un algorithme faible).
  • la dernière commande sélectionne une suite d'algorithmes suffisamment fiable pour le moment.

Relancez Apache:

sudo apache2ctl reload

Configuration du navigateur

Allez sur votre page de login, et vous verrez l'avertissement classique de certificat non reconnu. Acceptez définitivement le certificat (c'est le votre, vous venez de le créer, vous lui faites donc confiance). Vous devrez accepter le certificat sur chaque navigateur que vous utiliserez pour administrer votre site.

Si un jour, en vous connectant, l'avertissement s'affiche à nouveau, attention! Cela signifie que le serveur présente un autre certificat que celui que vous avez choisi, et qu'il y a soit un problème de configuration, soit une personne/machine qui trafique votre connexion. Évitez alors de vous connecter à votre site. Et éventuellement, déconnectez-vous complètement du réseau, car un attaquant ne visera pas que la connexion à votre blog, mais aussi celles vers tout autre site.

Les thèmes relatifs

Voici les thématiques abordées par Sécurisez l’administration de WordPress avec SSL:

11 commentaires
  1. Daniel Roch
    726 messages

    Daniel Roch - Le 08 mars 2012, 09:05

    Bravo Géo pour cet article complet et technique sur l’installation de SSL pour l’administration de WordPress.

    Seul élément dommage, cela ne peut s’appliquer sur un grand nombre d’hébergement mutualisés… :(

  2. Geoffroy Couprie
    9 messages

    Geoffroy Couprie - Le 08 mars 2012, 09:47

    On peut changer la cipher suite dans un htaccess, mais pas le reste (il faut absolument avoir accès aux virtual hosts pour faire du SSL).

  3. Julio Potier
    53 messages

    Julio Potier - Le 08 mars 2012, 11:56

    Ha, si c’est du Couprie, c’est du bon !
    Article bien complet, même si j’aurais aimé voir des explications sur les mutu justement, car beaucoup de personnes sont en mutu.
    Mais ça devient un peu plus « custom », ton article est très bon, j’ai appris des choses :)
    Bonne journée !

  4. Geoffroy Couprie
    9 messages

    Geoffroy Couprie - Le 08 mars 2012, 12:14

    En gros, pour un mutualisé, l’hébergeur gère lui-même les virtual hosts, donc soit on a un hébergeur sympa qui permet de créer un second vhost sur le port 443 avec le certificat et la clef qu’on veut (j’en connais pas pour le moment), soit on fonctionne comme wordpress.com: ils ont pris un certificat wildcard pour *.wordpress.com, c’est-à-dire un certificat qui fonctionne pour tous les sous-domaines de wordpress.com, et ils redirigent sur le sous-domaine quand quelqu’un veut administrer son site.

  5. laura
    1 message

    laura - Le 08 mars 2012, 17:38

    Personnellement je suis sur un mutualisé ovh et le certificat est inclus dans mon offre

    comme indiqué dans le billet , celui-ci n’est pas certifié mais il suffit pour sécuriser les connexions comme les visiteurs n’ont pas accès

    Bon post en tout cas (surtout pour ceux qui doivent configurer tout à la main)

  6. Pierre
    2 messages

    Pierre - Le 09 mars 2012, 09:16

    Je commente juste pour la pub tendancieuse en haut de l’article… ;-)

  7. Daniel Roch
    726 messages

    Daniel Roch - Le 09 mars 2012, 09:55

    @Pierre : la publicité dépend beaucoup de l’historique et des cookies de l’ordinateur. Chez moi, elle affiche une pub pour PowerBoutique (ce qui s’éloigne un peu je l’accorde de WordPress et de SSL…).

  8. Aurelien
    6 messages

    Aurelien - Le 14 mars 2012, 11:34

    Super article (comme souvent), merci !

  9. Damien
    1 message

    Damien - Le 10 août 2012, 13:38

    Bonjour et merci pour cet article…
    J’ai malgré tout une question toute bête. J’ai déjà sur mon serveur un owncloud qui tourne sur le port 443, est-il possible d’utiliser un autre port pour sécuriser l’admin de WordPress ?

  10. Geoffroy Couprie
    9 messages

    Geoffroy Couprie - Le 13 août 2012, 08:48

    Oui, c’est tout à fait possible: remplacez 443 dans « VirtualHost *:443″ par le port que vous voulez dans la configuration ci-dessus, et vous pourrez accéder à votre site à l’adresse « https://votredomaine.com:votreport ».

  11. guillaume
    2 messages

    guillaume - Le 03 mai 2013, 17:28

    et avec un hébergement mutualisé, comment cela se passe ? J’ai le cas avec 1&1, j’essaye de lier le certificat SSL avec le https mais très très difficilement, mon dieu… la difficulté quoi ! rien ne fonctionne… aucune explication sérieuse.

    Avez-vous une idée ?

» Commentez cet article !
(Merci de donner un vrai prénom)
(Ne sera jamais publié)
(Modèration subjective)
Html accepté <a> <i> <b> [codesyntax]CODE[/codesyntax]
» Prévisualisez votre message

© 2010-2012 SeoMix : WordPress & Référencement
Propulsé par WordPress et Daniel Roch. Logo créé par Willy-Bahuaud

Indispensable
WordPress
A propos de SeoMix
Mes servicesWordPress - Référencement
Suivez-nous !
  • 8859 abonnés
  • 197 articles
  • 4614 messages
Vous devriez lire
Seo et emarketing
Les amis
ee4753c3434bdcdb54c87ace60863dadj