PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

dada : HTTPS, la chose à ne pas négliger

lundi 20 mai 2013 à 07:35

securedweb.png

Chez les bidouilleurs de l'auto-hébergement, il y a des choses qu'on apprend à faire sur le tas : monter un serveur Apache, une base de données, des VirtualHosts et lier des applications à tout ceci, et des choses qu'on apprend sur le tard.

Sur mon installation actuelle, dont je suis assez fier puisque montée en presque autodidacte, je ne me suis pas tout de suite penché sur la sécurité des données qui transitées sur le réseau depuis mon serveur principal.

C'est maintenant chose faite : une partie de mon installation est désormais chiffrée part OpenSSL.

Mon instance ownCloud et la partie administration de ce blog propulsé sous Dotclear sont maintenant systématiquement redirigés vers leurs version HTTPS et non plus HTTP. En fait, à chaque fois qu'un mot de passe est demandé, je veux que ce soit fait de façon sure, en sécurisant le transite des données entre le navigateur et le serveur.

Je vous propose donc de partager ici les manipulations à faire pour un serveur sous Debian (encore Squeeze) et Apache2.

Remarque : La configuration que je vous propose se base sur des certificats auto-signés. Le principe des certificats repose sur une notion de confiance : le certificat est délivré par une entité jugée sure et reconnue qui prouve/atteste que vous arrivez dans une zone faisant transiter des données critiques de façon protégée. Avoir un certificat "officiel" coûtant environ un bras et deux jambes, ce que je vais expliquer ci-dessous s'appuie sur un certificat généré par vos soins, non officiel donc. Cela ne change rien quant au gain de sécurité. Le navigateur soupirera parce le certificat qu'il accepte n'émane pas d'une entité officielle, mais c'est tout.

Installer et activer OpenSSL

Pour installer, c'est simple :

aptitude install openssl

Pour activer OpenSSL dans apache :

a2enmod ssl

S'occuper des certifications

On commence part créer le répertoire qui contiendra les fichiers de certification :

mkdir -p /etc/ssl/localcerts

On génère ensuite les certifications :

openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key

Et on termine par la mise en place des bons droits :

chmod 600 /etc/ssl/localcerts/apache*

On se retrouve maintenant avec la gestion de la certification qui va bien et avec Apache prêt à s'en servir.

Configuration d'Apache

Dans un souci de simplicité, je vais vous montrer comment reprendre le fichier d'exemple de configuration présent dans /etc/apache2/sites-available/ : default-ssl.

Vous n'aurez pas grand chose à modifier. 

Déclarer le nom et le port du VirtualHost

Ajoutez NameVirtualHost *:443 et modifiez la balise ouvrante de déclaration du VirtualHost .

Vous devriez donc passer d'un fichier de base :




[...]


À quelque chose comme ça :


NameVirtualHost *:443


[...]


Activez SSLEngine

La ligne suivante est parfois commentée. Faîtes sauter le # qui traîne devant.

SSLEngine On

Renseignez correctement les chemins vers le certificat et la clé

Ces deux lignes suivantes sont déjà présentes mais ne pointent pas vers ce que nous avons généré un peu plus haut dans le répertoire /etc/ssl/localcerts/, modifiez-les comme ceci :

SSLCertificateFile /etc/ssl/localcerts/apache.pem
SSLCertificateKeyFile /etc/ssl/localcerts/apache.key

Le fichier default-ssl est maintenant configuré. Passons aux dernières petites choses à faire.

Activer le VHost

Votre VHost est configuré par le fichier default-ssl. Activez-le donc :

a2ensite default-ssl

Vérifiez qu'Apache écoute bien le port 443

... dans son fichier de configuration /etc/apache2/ports.conf. A priori, il l'écoute de base.

Vous pouvez maintenant redémarrer le serveur Apache et profiter d'un accès en HTTPS !

/etc/init.d/apache2 restart

Utilisez la connexion en HTTPS automatiquement

C'est bien malin d'avoir mis en place le HTTPS mais il est encore plus malin de forcer son utilisation, histoire de ne pas s'être plongé dans des fichiers de configuration pour rien.

Pour obligatoirement utiliser une connexion sécurisée lorsque vous vous connectez à une partie de votre site, utilisez la redirection permanente vers l'accès en HTTPS.

On va prendre pour exemple l'accès à son instance ownCloud qui se ferait via : http://www.dadall.info/owncloud

Dans /etc/apache2/sites-available/default, on va ajouter une ligne pour s'occuper de sa redirection : 

 Redirect permanent /owncloud https://www.dadall.info/owncloud

Maintenant, quand vous vous connecterez sur www.dadall.info/owncloud, vous serez automatiquement redirigé vers du HTTPS.

Vous pouvez ajouter autant de redirections que vous voulez, faites-vous plaisir.

Comme je le dis toujours : chez moi ça marche. Mais bon, si ça ne marche pas chez  vous, utilisez les commentaires et je ferais ce que je peux.

Gravatar de dada
Original post of dada.Votez pour ce billet sur Planet Libre.

Articles similaires