GoldZone Web Hosting

Rédigé par Gaëtan Trellu (goldyfruit)

Outils pour utilisateurs

Outils du site


ssl

Installation du support SSL et création d'un certificat.

L'utilisation du SSL permet le chiffrement des données transmises entre le client et le serveur ce qui empêche par exemple qu'un mot de passe circule en clair à travers internet.
Je n'expliquerai pas plus son fonctionnement, pour avoir plus d'informations je vous invite fortement à lire ceci :

La démarche n'est pas trop complexe, un peu de colle, des clous, un maître (moi :-D) et un marteau !!
Trêve de plaisanteries, passons aux choses sérieuse.

Installation.

Le support du SSL est en fait un simple module qui est installé de base avec Apache.
Il nous reste plus qu'à charger ce dernier.

# a2enmod ssl

Résultat :

4:19 root@serveur-backup ~# a2enmod ssl
Module ssl installed; run /etc/init.d/apache2 force-reload to enable.

SSL est écouté sur le port 443. Apache écoute par défaut sur le port 80, nous allons lui dire d'écouter aussi sur le port 443.
Pour cela dans le fichier /etc/apache2/ports.conf on ajoute ceci :

Listen 443

On relance Apache pour que le module et le port soient pris en comptes.

# /etc/init.d/apache2 restart

Apache est désormais capable de gérer le support du SSL.
Rapide hein ?

Configuration.

La configuration va consister à créer un virtualhost qui écoutera sur le port 443.
Nous allons créer un fichier vhost-ssl.conf que nous allons placer dans le répertoire /etc/apache2/site-available/ puis on y ajoute les lignes suivantes :

NameVirtualHost *:443
<VirtualHost *:443>
 
        ServerName marcel.com
        ServerAlias www.marcel.com
 
        DocumentRoot /var/www/marcel/
 
        SSLEngine On
        SSLProtocol All
        SSLCertificateFile /etc/apache2/ssl/ssl.crt/mon.domaine.com.crt
        SSLCertificateKeyFile "/etc/apache2/ssl/ssl.key/mon.domaine.com.key"
 
        <Directory "/var/www/marcel/">
                AllowOverride All
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
 
        ErrorLog /var/www/logs/ssl-marcel.com-error.log
        CustomLog /var/www/logs/ssl-marcel.com-access.log combined
 
</VirtualHost>

Explications :

NameVirtualHost *:443

Grâce à cette directive votre serveur va pouvoir résoudre les adresses DNS, elle doit être placée dans un seul virtualhost.

<VirtualHost *:443>

Ouverture du virtualhost, signifie que l'on écoute sur toutes les adresses IP (si il y en a plusieurs) sur le port 443.

SSLEngine On

Activation du support SSL pour ce virtualhost.

SSLProtocol All

Permet d'utiliser tous les protocoles (SSLv2, SSLv3 et TLSv1).

SSLCertificateFile /etc/apache2/ssl/ssl.crt/mon.domaine.com.crt

Emplacement du certificat sur le serveur.

SSLCertificateKeyFile "/etc/apache2/ssl/ssl.key/mon.domaine.com.key"

Emplacement de la clés privée du certificat sur le serveur.

La configuration du virtualhost SSL est terminée. :!:

Création du certificat.

Un certificat SSL (Secure Socket Layer) est un fichier spécial qui est installé sur un serveur web. Ce certificat permet de chiffrer les données émises par le serveur web afin d'en protéger la confidentialité. Un certificat SSL est créé et attribué à une entité bien identifiée (en général la personne morale ou physique propriétaire du site) et après vérification du droit de celle-ci à utiliser ce certificat.

Source : http://www.netenligne.com/ecommerce/ssl1.asp

Voila, après cette petite introduction il est temps de passer au concret.
Pour générer le certificat nous allons utiliser OpenSSL.

Création de la bi-clés privées du certificat.

$ openssl genrsa -out gzw.key 1024

Résultat :

18:09 root@serveur-backup ~# openssl genrsa -out gzw.pem 1024
Generating RSA private key, 1024 bit long modulus
........++++++
...................................................................++++++
e is 65537 (0x10001)

Explications :

  • genrsa indique que l'on souhaite généré une clés privée de type RSA.
  • -out gzw.key indique le nom de la clés.
  • 1024 défini la taille de la clés.

Générer le certificat.

$ openssl req -new -x509 -days 365 -key gzw.pem -out gzw.crt

Résultat :

18:52 root@serveur-backup ~# openssl req -new -x509 -days 365 -key gzw.pem -out gzw.crt
Enter pass phrase for gzw.pem:

Laissez le champ vide puis répondez aux questions suivantes :

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]:GoLDZoNE Web HoSTING
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:goldzoneweb.info
Email Address []:administrateur@goldzoneweb.info

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

Explications :

  • req permet créer le certificat.
  • -new indique que c'est un nouveau certificat, c'est ce paramètre qui génère le questionnaire.
  • -x509 permet de signer le certificat automatiquement.
  • -days 365 défini la durée de validité du certificat, ici 365 jours.
  • -key server.key indique la clés RSA qui sera utilisée.
  • -out gzw.crt indique le nom du certificat.

Prise en charge du certificat par Apache.

Maintenant que la clés et le certificat ont été générés, il nous faut indiquer leur chemin au virtualhost d'Apache.
Pour une question d'ergonomie, nous allons créer deux répertoires ou seront placés les fichiers obtenus par OpenSSL dans le répertoire /ect/apache2/ssl/

# mkdir /etc/apache2/ssl-crt && mkdir /etc/apache2/ssl-key

Placez le fichier .key dans le répertoire /etc/apache2/ssl-key/ et le fichier .crt dans le répertoire /etc/apache2/ssl-crt/.
La configuration du virtualhost doit ressembler à ceci :

NameVirtualHost *:443
<VirtualHost *:443>
 
        ServerName www.marcel.com
        ServerAlias marcel.com
 
        DocumentRoot /var/www/marcel
 
        SSLEngine On
        SSLProtocol All
        SSLCertificateFile /etc/apache2/ssl/ssl-crt/gzw.crt
        SSLCertificateKeyFile "/etc/apache2/ssl/ssl-key/gzw.key"
 
        <Directory "/var/www/marcel/">
                AllowOverride All
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
 
        ErrorLog /var/www/logs/ssl-marcel.com-error.log
        CustomLog /var/www/logs/ssl-marcel.com-access.log combined
 
</VirtualHost>

Alors, le module SSL est activé, le certificat est créé, le virtualhost est configuré maintenant il ne reste plus qu'à relancer Apache pour prendre les modifications en comptes.

# /ect/init.d/apache2 restart

Pfiouuu, ça c'est fait.
Je pense que l'utilisation d'OpenSSL a dû vous sembler un poil complexe, si tel est le cas je vous invite à lire ceci (en anglais) : http://www.openssl.org/docs/apps/openssl.html

ssl.txt · Dernière modification: 2011/01/05 16:05 (modification externe)