Deux solutions pour arriver a faire des connexion HTTPS avec le serveur :

  • utiliser un reverse proxy HTTPS
  • utiliser un wrapper SSL

La solution à base de reverse proxy ne me satisfait pas pour deux raisons. La première c'est que ce serveur météo doit pouvoir tourner sur des machines très légères (un client léger HP T5700 dans mon cas 512Mo RAM/ Transmeta(tm) Crusoe(tm) Processor TM5800@1GHz, mais la cible est encore plus "low end"). Or une solution de reverse proxy avec Apache par exemple sera gourmande en ressources. L'autre point, c'est qu'il risque d'être nécessaire de modifier la configuration de l'application et donc de générer des effets de bord lors d'une mise à jour future. Le reverse proxy présente toutefois l'avantage de pouvoir "proxifier" d'autre ressources non sécurisées. La seconde option consiste à utiliser un wrapper SSL. Le HTTPS n'étant jamais que tu HTTP over SSL, un demon va prendre en charge la partie SSL de la connexion puis déléguer le traitement la partie en clair au serveur web. J'ai choisi STunnel qui présente l'avantage d'être distribué sous forme de package. Après un test sur une autre machine j'ai appliqué la configuration suivante.

Intallation & Configuration

L'installation a été réalisé avec succès sur une Debian Etch et une Debian Lenny.

installation de stunnel 4

Sous Debian, rien de plus simple. Attention toutefois, le 4 la fin de stunnel4 est important sinon vous installerez la version 3.

apt-get install stunnel4

Configuration spécifique Debian

Editer le fichier /etc/default/stunnel4 et changer

ENABLED=0

par

ENABLED=1

Configuration SSL pour Stunnel

Afin de pouvoir crypter les flux, Stunnel doit disposer d'un certificat de crytage que nous allons générer avec openssl. Placez-vous dans le répertoire /etc/stunnel4 et générez le certificat SSL pour Stunnel.

cd /etc/stunnel4
openssl req -new -x509 -nodes -days 365 -out stunnel.pem -keyout stunnel.pem

Configuration de Stunnel4

Ouvrez le fichier /etc/stunnel4/stunnel.conf et inserer les lignes :

cert = /etc/stunnel/stunnel.pem
key = /etc/stunnel/stunnel.pem

Vers la fin du fichier, commentez toute la section avec des ";" en tête de ligne.

;[pop3s]
;accept  = 995
;connect = 110
;[imaps]
;accept  = 993
;connect = 143
;[ssmtp]
;accept  = 465
;connect = 25

Et décommentez la dernière section [https] en supprimant les";" :

[https]
accept  = 443
connect = 80
TIMEOUTclose = 0

[Re]Lancez stunnel

On relance stunnel:

/etc/init.d/stunnel4 restart

Notes :

  • Le service HTTP est toujours actif! Cette opération ne fait qu'ajouter une surchouche SSL au listener HTTP existant. Dans mon cas, il n'est plus accessible depuis l'extérieur car j'ai mis à jour la configuration de mon routeur. Veillez donc à bien fermer l'accès HTTP (supprimez la redirection du port 80 ou via un pare-feu).
  • De la même manière, si votre serveur se trouve derrière un routeur vous devez ajouter une redirection HTTPS (port 443) vers votre serveur pour pouvoir accéder au service HTTPS.
  • Le serveur Météo est Meteohub. Plus d'informations ici : http://www.meteohub.de/