Mise en place d’un serveur HTTPS sous Debian

Dans cette article, je vais présenter la mise en place d’un serveur https sous Debian avec Apache et des certificats CACert.org

CACert.org est une autorité de certification gratuite et communautaire, elle permet de réaliser des tests de mise en place avant d’acheter un certificat (relativement cher) auprès d’une autorité reconnue comme Thawte ou verisign. En effet CACert.org n’est pas reconnue par défaut par les différents navigateurs du marché, il vous faudra donc ajouter cette autorité de certification à votre navigateur afin de ne pas avoir d’alerte de sécurité lors de l’ouverture du site en https

Je ne détaillerais pas dans cet article la mise en place d’un serveur Apache et la création d’un VirtualHost

Configuration initiale

Voici le vhost de départ :

<VirtualHost *:80>
        ServerName www.mondomaine.com
        ServerAdmin admin@mondomaine.com
        DocumentRoot /var/www
        <Directory /var/www>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        LogLevel debug
        ErrorLog /var/log/apache2/error.mondomaine.com.log
        CustomLog /var/log/apache2/access.mondomaine.com.log  combined
</VirtualHost>

Création des du compte CACert et des certificats SSL

Pour obtenir des certificats de la part de CACert.org il est nécessaire de créer un compte, pour cela, rendez-vous sur le site CACert.org et cliquer sur join, et remplir le formulaire de création de compte. Une fois votre compte créer, authentifiez vous et cliquez sur Domains puis sur add et ajouter votre domaine.

Une fois le domaine créer il va falloir faire une demande de certificat pour votre domaine, pour cela, il faut cliquer sur le lien Server Certificates puis Add, là CACert vous demande de coller votre Certificate Signing Request, nous allons donc la créer :

[root]# cd /home/me
[root]# openssl req -nodes -new -keyout private.key -out server.csr
Generating a 1024 bit RSA private key
................++++++
................................++++++
writing new private key to 'private.key'
-----
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]:MyCompany
Organizational Unit Name (eg, section) []:WebSite
Common Name (eg, YOUR name) []:www.mondomaine.com
Email Address []:admin@mondomaine.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

La clé est générée dans le fichier private.key et la requête de certificat est créée dans le fichier : server.csr. Lors de la création il est nécessaire de donner quelques informations, la plus importante étant : Common Name (eg, YOUR name) car c’est là que vous devrez renseigner votre nom de domaine.

Editer le fichier server.csr et copier (tout) le contenu, pour le coller dans la zone prévue à cet effet sur la page CACert de création du certificat et valider le formulaire. CACert vous affiche alors votre certificat, il faut (tout) copier le certificat dans un fichier sur votre machine : www.mondomaine.com.crt.

Il reste donc maintenant à configurer le serveur apache

Configuration du SSL

Dans mon exemple, je ne vais pas conserver le site sur le port 80, mais vous pourriez tout-à-fait dupliquer le vhost pour le https, et alors votre site serait accessible à la fois en http et https.

Avant nous allons déplacer les fichiers private.key et www.mondomaine.com.crt dans le répertoire : /etc/apache2/ssl

Voici donc le vhost modififié :

<VirtualHost *:443>
        ServerName www.mondomaine.com
        ServerAdmin admin@mondomaine.com
        SSLEngine On
        SSLCipherSuite HIGH:MEDIUM
        SSLCertificateFile ssl/www.mondomaine.com.crt
        SSLCertificateKeyFile ssl/private.key
 
        DocumentRoot /var/www
        <Directory /var/www>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        LogLevel debug
        ErrorLog /var/log/apache2/error.mondomaine.com.log
        CustomLog /var/log/apache2/access.mondomaine.com.log  combined
</VirtualHost>

Redémarrer Apache, et connectez vous à votre site : https://www.mondomaine.com

Et oui, comme je le disais au début, CACert n’est pas une autorité de certification reconnue par les navigateurs, il est donc nécessaire d’installer le certificat racine dans votre navigateur. Je ne détaillerais pas cette procédure compte tenu du nombre de navigateur, mais voici un lien qui décris trés bien tout ça : http://wiki.cacert.org/FAQ/BrowserClients?action=show&redirect=BrowserClients

Encore un test sur votre domaine : https://www.mondomaine.com, et hop, plus d’alerte de sécurité …

Ressources …

Quelques ressources … :

You can leave a response, or trackback from your own site.

2 Responses to “Mise en place d’un serveur HTTPS sous Debian”

  1. [...] mon précédent article, j’ai décris comment mettre en place le HTTPS sous [...]

  2. Elouise dit :

    Dag nabbit good stuff you whppienrsappers!

Leave a Reply