lighttpd + etch + openssl

Pour paramétrer un accès SSL avec lighttpd sous debian Etch, se connecter avec root (avec “sudo” ou “su -”) et commencer par installer lighttpd et openssl:

apt-get install lighttpd openssl

Vérifier que Lighttpd supporte bien le SSL:

lighttpd -v
lighttpd-1.4.13 (ssl) - a light and fast webserver
Build-Date: Jul 22 2008 12:20:22

Si vous possédez pas encore de certificat, c’est le moment! commencer par générer la clé privée “ssl.key” dans “/etc/lighttpd/openssl”. Attention, ne perdez pas ce fichier et ne le publiez pas!

mkdir -p /etc/lighttpd/openssl/ && cd !$ openssl genrsa -des3 -out ssl.key 1024

Puis la demande de certificat transitoire grâce à cette même clé:

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

Cette demande de certificat doit être transmise à votre autorité de certification préférée (par exemple thawte) qui vous renverra un certificat en bon et du forme en échange de menue monnaie. Enregistrer ce fichier sous “/etc/lighttpd/openssl/ssl.crt”.

Enfin créer à partir de votre clé privée “ssl.key” et du certificat tout frais “ssl.crt” le fichier “ssl.pem” dont à besoin Lighttpd:

cat ssl.key ssl.crt > ssl.pem

Protéger les fichiers en vérifiant les droits (en lecture seule pour lighttpd uniquement):

chown -R www-data:www-data /etc/lighttpd/openssl
chmod 0700 /etc/lighttpd/openssl
chmod 0400 /etc/lighttpd/openssl/*

Transférer TOUS les accès sur le http (port 80) vers le https (port 443) en ajoutant/modifiant dans le fichier “/etc/lighttpd/lighttpd.conf”:

$SERVER["socket"] == ":80" {
  $HTTP["host"] =~ "(.*)" {
    url.redirect = ( "^/(.*)" => "https://%1/$1" )
  }
}

Et y activer la prise en charge du protocole SSL en ajoutant/modifiant:

$SERVER["socket"] == ":443" {
  ssl.engine = "enable"
  ssl.pemfile = "/etc/lighttpd/openssl/ssl.pem"
}

Relancer le serveur web…

invoke-rc.d lighttpd restart

…et à vous les accès sécurisés :)

Tags:  lighttpd, linux, openssl

Articles relatifs