27-11
2009

Créer et Installer un certificat SSL sous Lighttpd

Installer un certificat SSL sous Lighttpd est une opération plutôt simple mais demande un peu de rigueur. Dans cet article, le certificat SSL sera un certificat valide, acheté sur NameCheap.com pour 10.95 U$D (7.50 €uros au taux de change actuel).

Achat du certificat SSL

Procédez au paiement puis vous recevrez rapidement un email vous informant de la marche à suivre (bien sûr ils ne vont parler que d'Apache). Rendez-vous sur la page d'activation de votre certificat SSL (Active Now) et activez votre certificat SSL.

NameCheap: SSL - Active Now

L'interface NameCheap vous demande alors de sélectionner le type de serveur Web que vous utilisez ainsi que d'entrer votre CSR. Nous allons donc passer à la génération du fichier CSR.

Génération du CSR

Rendez-vous dans le répertoire de configuration de Lighttpd
cd /etc/lighttpd/
# Créez un dossier ssl
mkdir /etc/lighttpd/ssl/
cd ssl/
# Générez un fichier Key.
openssl genrsa -des3 -out admin-serv.net.key 1024
# Lorsque OpenSSL vous demande une passphrase, entrer
# un mot de passe et notez le !
Generating RSA private key, 1024 bit long modulus
.........++++++
........++++++
e is 65537 (0x10001)
Enter pass phrase for admin-serv.net.key:
Verifying - Enter pass phrase for admin-serv.net.key:
# Générez ensuite votre fichier CSR
openssl req -new -key admin-serv.net.key -out admin-serv.net.csr
# Entrez votre pass phrase
Enter pass phrase for admin-serv.net.key:
# Vous allez maintenant devoir fournir des informations claires et précises
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]:France
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Admin Serveur
Organizational Unit Name (eg, section) []:Admin Serveur
# Attention à cette étape car votre certificat va être
# fait pour un seul et unique domaine
Common Name (eg, YOUR name) []:admin-serv.net
Email Address []:boris17480@gmail.com
Please enter the following 'extra' attributes
to be sent with your certificate request
# Un mot de passe si vous le souhaitez
A challenge password []:
An optional company name []:Admin Serveur
Maintenant que votre fichier CSR est créé, envoyez le à NameCheap
cat admin-serv.net.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIB+zCCAWQCAQAwgZwxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAM
BgNVBAcTBVBhcmlzMRYwFAYDVQQKEw1BZG1pbiBTZXJ2ZXVyMRYwFAYDVQQLEw1B
ZG1pbiBTZXJ2ZXVyMRcwFQYDVQQDEw5hZG1pbi1zZXJ2Lm5ldDEjMCEGCSqGSIb3
DQEJARYUYm9yaXMxNzQ4MEBnbWFpbC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0A
MIGJAoGBALTQV607z5/4K6jlvVjdzUPGXXmhA9K8/6GIHEEWuIXJmGI3s4DCcFAk
jmCaWz77O+ZkJzdTLVTEO9nWqGIu8l/0Ucs/Uy5aPM9nCKDp6z/KzcJY7Nl/ZcL9
Kvy1/QM4HjQJFydu83gKDf2NhoYqBO1kR89NaQR83hWSBiXq1jMrAgMBAAGgHjAc
BgkqhkiG9w0BCQIxDxMNQWRtaW4gU2VydmV1cjANBgkqhkiG9w0BAQUFAAOBgQAb
7fn3tshD6FBDCtKi+ssbKk0yhVlFVFQI+viKXxv+PARNJ1xl5HnQhjLJ8egrk5c0
7zXv5qbEAsncEVWkrZO1+2s/FDqELiGBYi5LCKk/hchkh6aUdlSbCRT32UJcEhle
IzDC3CS0ZHaAoUu4HCrNTEcmQkvGC5OR6H56edlxnA==
-----END CERTIFICATE REQUEST-----
NameCheap: Envoi du CSR
NameCheap vous demande ensuite de sélectionner une adresse email pour prouver que vous êtes bien l'owner du domaine. Indiquez celle qui correspond le mieux. Ces données étant trouvé en faisant un mix entre les records Whois et les adresses email normales (postmaster, etc..).
NameCheap: Validation de l'Owner
Valider ensuite l'owner, NameCheap va tout d'abord tester la connexion puis vous envoyer un email pour valider votre adresse email. Création du certificat sur le site de GeoTrust: NameCheap vous a envoyé un email contenant un lien permettant d'activer votre certificat SSL. Cliquez sur ce lien d'activation. GeoTrust vous demande d'approuver les informations cités sur la page, puis votre certificat vous est envoyé par mail.
RapidSSL: OK
Rendez-vous alors dans votre boite mail, et regardez en bas de la page, votre certificat SSL est là. Maintenant, vous n'avez plus à retourner sur ces sites.

Backup de vos certificats & clés

Afin d'éviter tout problème par la suite, nous allons effectuer un petit backup des clés et certificats que vous avez créé précédemment ainsi que du certificat SSL reçu.
# Rendez-vous dans le répertoire de vos certificats SSL
cd /etc/lighttpd/ssl/
# Créez un dossier "backup"
mkdir /etc/lighttpd/ssl/backup/
# On créé le fichier contenant notre certificat SSL
nano admin-serv.net.crt
# Copiez tout dedans
# Fermez nano
# On copie tout dans le dossier backup
cp admin-serv.* /etc/lighttpd/backup/
# On créé notre fichier d'encryption (pem)
cat admin-serv.net.key admin-serv.net.crt > admin-serv.net.pem
Maintenant que tout est presque prêt, on va pouvoir ajouter notre certificat SSL à un socket Lighttpd.

Installation du certificat SSL dans lighttpd

Rendez-vous dans lighttpd.conf
cd /etc/lighttpd/
nano lighttpd.conf
# Et rajoutez les informations comme suit
$SERVER["socket"] == "91.121.169.79:443" {
     ssl.engine = "enable"
     ssl.pemfile = "/etc/lighttpd/ssl/admin-serv.net.pem"
     ssl.ca-file = "/etc/lighttpd/ssl/admin-serv.net.crt"
     server.name = "admin-serv.net"
     # votre configuration habituelle pour ce domaine
}
Voilà l'installation est terminée, une petite vérification
lighttpd -f /etc/lighttpd/lighttpd.conf -t
Syntax OK
# Tout est OK, on redémarre
/etc/init.d/lighttpd restart
Stopping web server: lighttpd.
# Lighttpd vous demande alors votre mot de passe
Starting web server: lighttpdEnter PEM pass phrase:
.

Suppression du mot de passe pour pouvoir redémarrer automatiquement votre serveur

# Attention à bien avoir fait vos backups
openssl rsa -in /etc/lighttpd/ssl/admin-serv.net.key -out /etc/lighttpd/ssl/admin-serv.net.deprotected.key
Enter pass phrase for /etc/lighttpd/ssl/admin-serv.net.key:
writing RSA key
# La clé est maintenant sans mot de passe
# On mets à jour notre configuration Lighttpd
cat admin-serv.net.deprotected.key admin-serv.net.crt > admin-serv.net.pem
# On redémarre lighttpd
/etc/init.d/lighttpd restart
Stopping web server: lighttpd.
Starting web server: lighttpd.
# Le serveur a redémarré sans poser de question.
Voilà, notre site est disponible en https. Vérifiez par vous-même : https://admin-serv.net/

Sécurisation

Notre certificat SSL fonctionne, mais celui-ci est accessible par tout le monde en lecture.
cd /etc/lighttpd/ssl/
# On rends lighttpd owner du fichier
chown www-data:www-data *.pem
# On applique les bons droits de lecture
chmod 0600 *.pem
# On redémarre lighttpd
Voilà, votre site est dispose maintenant d'un certificat SSL, l'opération ne vous aura prise pas plus de 10 minutes et coutée un peu moins de 10€uros.

 

 

1 Commentaire pour ce billet.

 

 

  1. Bonjour,
    Merci pour le tuto, j'ai créer 2 ".csr" et 2 ".key", j'ai générer les 2 ".pem", mais je bloque sur la dernière partie, j'ai plusieurs domaines, donc j'ai utiliser le "Server Name Indication" SNI.
    Dois je mettre les fichiers ".pem" dans une condition "host" pour chacun des noms de domaine?

    Help please !

 

Votre commentaire