Gérer des certificats SSL signés par une autorité de certification

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

Startssl_logo.png

StartSSL Logo

Software version
Operating System Debian 7
Website StartSSL Website
Last Update 17/02/2015
Others Nginx 1.2.1
Lighttpd 1.4.31

1 Introduction

Vous avez besoin pour votre société ou pour vos besoins personnels d'avoir du SSL sur votre site web. L'inconvénient c'est que si vous les générez vous même et vous les auto signez, la première fois que vous irez dessus, vous aurez un message d'avertissement.

Pour ne pas avoir ce message et un beau petit cadenas sur votre navigateur qui dit que vous êtes protégés, il faut payer à une autorité de certification un paquet de fric pour avoir un certificat SSL valide.

Seulement voilà il existe de gentilles sociétés qui gratuitement ou pour quelques dizaines d'euros vous offrent un certificat pour votre nom de domaine signé :-). C'est ce que nous allons voir ici avec StartCom.

2 Génération des certificats

Avant de commencer, créez votre compte et allez jusqu'à l'étape de la clef privée sur StartCom.

Ici, je vais présenter plusieurs serveurs :

  1. Lighttpd : Génération d'une clef en classe 1[1]
  2. Nginx : Génération d'une clef wildcard en classe 2[2]

Je vous laisse adapter à votre configuration si vous avez besoin d'inverser.

2.1 Lighttpd

Nous allons voir ici comment faire avec Lighttpd. Tout d'abord, créons l'essentiel :

Command
cd /etc/lighttpd
mkdir ssl
cd ssl

Ensuite, nous allons générer la clef RSA privée et on sécurise le tout :

Command openssl
openssl genrsa -out server.key 4096
chmod 400 server.key

Copiez le contenu de cette clef dans le site afin qu'il vous génère la suite. Puis nous allons créer le CSR :

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

Pour la partie common name, entrez votre site par défaut (ex : www.deimos.fr).

Récupérez ensuite les certificats de StartCom :

Command wget
wget http://www.startssl.com/certs/ca.pem
wget http://www.startssl.com/certs/sub.class1.server.ca.crt
wget http://www.startssl.com/certs/sub.class1.server.ca.pem

2.2 Nginx

Nous allons voir ici comment faire avec Nginx. Tout d'abord, créons l'essentiel :

Command
cd /etc/nginx
mkdir ssl
cd ssl

Ensuite, nous allons générer la clef RSA privée et on sécurise le tout :

Command openssl
openssl genrsa -out server.key 4096
chmod 400 server.key

Copiez le contenu de cette clef dans le site afin qu'il vous génère la suite. Puis nous allons créer le CSR :

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

Pour la partie common name, entrez votre site par défaut (ex : www.deimos.fr).

Récupérez ensuite les certificats de StartCom :

Command wget
wget http://www.startssl.com/certs/ca.pem
wget http://www.startssl.com/certs/sub.class2.server.ca.crt
wget http://www.startssl.com/certs/sub.class2.server.ca.pem

2.3 Signature du certificat

Maintenant on va générer un certificat sur le site web StartSSL. Pour commencer, créez votre domaine avec le Validation Wizzard :

Startssl3.png

Choisissez Domain Name Validation :

Startssl1.png

Puis créez le domaine que vous souhaitez :

Startssl2.png

Finissez la création du domaine et cliquez sur Certificates Wizzard :

Startssl3.png

Ensuite sélectionnez la partie "Web Server SSL/TLS Certificate" car c'est ça qui nous intéresse :

Startssl4.png

Ensuite on skip cette partie car nous avons générer notre propre certificat

Startssl5.png

Et on colle le contenu du fichier server.csr dans la zone de texte :

Startssl6.png

Finissez, puis créer un fichier server.crt avec le contenu qui nous sera donné comme certificat SSL.

3 Configuration

3.1 Lighttpd

Ensuite, nous créons un certificat pem depuis ceux que nous avons générer ainsi qu'un crt :

Command cp
cat server.key server.crt > server.pem
cat ca.pem sub.class1.server.ca.pem > ca-certs.crt

Ensuite nous allons configurer notre serveur lighttpd afin qu'il prenne nos nouvelles clefs :

Configuration File /etc/lighttpd/conf-enabled/10-ssl.conf
## lighttpd support for SSLv2 and SSLv3
## 
## Documentation: /usr/share/doc/lighttpd-doc/ssl.txt
##  http://www.lighttpd.net/documentation/ssl.html 
 
#### SSL engine
$SERVER["socket"] == "0.0.0.0:443" {
                  ssl.engine                  = "enable"
                  ssl.pemfile                 = "/etc/lighttpd/ssl/server.pem"
                  ssl.ca-file                 = "/etc/lighttpd/ssl/ca-certs.crt"
}

N'oubliez pas de redémarrer votre serveur Lighttpd pour que les paramètres soient pris en compte :-)

3.2 Nginx

Pour Nginx, c'est un peu différent de Lighttpd. Nous allons créer le certificat unifié comme ceci :

Command cat
cat ssl.crt sub.class2.server.ca.pem ca.pem > /etc/nginx/ssl/server-unified.crt

Configuration File /etc/nginx/sites-enabled/www.deimos.fr
[...]
ssl on;
ssl_certificate /etc/nginx/ssl/server-unified.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
[...]

Ensuite, redémarrez Nginx pour que les certificats fonctionnent.

4 Ressources

  1. ^ http://forum.startcom.org/viewtopic.php?t=719
  2. ^ http://www.startssl.com/?app=42