Auto-signer son certificat SSL
De Wiki de l'internet libre.
Sommaire |
Introduction
Ce tutoriel a pour but de vous apprendre à auto-signer vos certificats SSL pour vos pages web.
Voir aussi les articles HTTPS_et_SSL/TLS et Certificats.
Pré-requis
- Un serveur web administrable (Apache)
- Une distribution Linux (Debian, Ubuntu, etc.)
Avertissement
Attention ! L'auto-signature des certificats SSL nécessite une acceptation de la part de l'utilisateur. En effet, sous Firefox, si ce n'est pas une organisation reconnue qui gère vos certificats, le navigateur vous mettra en garde et il vous faudra accepter le certificat. Ceci peut faire "peur" à certains utilisateurs.
Autorités de certifications
Voici une liste non exhaustive d'organismes capables de gérer vos certificats officiellement.
- Thawte
- Certigna
- Certinomis
- Keynectis
- Entrust,
- Verisign
- GlobalSign
- ChamberSign,
- TBS X509,
- CAcert
- Gandi.net
- OVH
- Starfield
Source : Wikipédia
Voir aussi StartCom Free SSL pour des certifications gratuites acceptées par Mozilla Firefox.
Réalisation manuelle
Télécharger les logiciels requis
Pour pouvoir mener à bien notre tutoriel nous avons besoin des logiciels suivants :
Il faut pour commencer télécharger les dernières versions de ces logiciels :
- 1. Créez un répertoire temporaire tel que
/usr/src/et placez-vous dessus grâce à la commandecd.
- 2. Téléchargez les dernières versions des logiciels listés ci-dessus grâce à la commande
wget urldevotrefichier.tar.gz
- 3. Il faut à présent extraire les fichiers de ces archives grâce à la commande :
tar -xzvf <votre_paquet>.tar.gz
Compiler les logiciels
La première chose à faire après avoir téléchargé et décompressé un paquet, il faut le compiler ! Pour ce faire nous devons nous rendre dans le répertoire temporaire crée précédemment et taper :
- Apache
cd apache<votre_version>
./configure
- OpenSSL
cd openssl-<votre_version>
sh config -fPIC
make
make install
- MM de Ralf Engelschall
cd mm<votre_version>
./configure --disable-shared
make
make install
- mod_ssl
cd mod_ssl-<votre_version>.tar.gz
./configure --with-apache=../apache_<votre_version>
Source : http://slacksite.com/apache/webserver.php
Réalisation automatisée
apt-get install apache2 libapache-mod-perl openssl-server php5 libapache2-mod-php5
Sous Debian et Ubuntu, il est très facile d'installer apache-ssl, l'installateur de paquet APT peut également nous générer automatiquement un certificat SSL. Voici la commande à taper dans votre shell :
apt-get update
apt-get install libapache-mod-ssl
Plusieurs paquets supplémentaires seront peut-être installés. L'installeur vous demande plusieurs paramètres pour le certificat SSL, entrez les données que vous voulez et finissez l'installation.
Normalement tout est bien configuré et vous pouvez déjà accéder en mode sécurisé à votre page de démarrage en tapant dans le navigateur
https://Adresse_IP_de_votre_serveur
En théorie, seul le serveur Apache que vous venez d'installer tourne sur votre configuration, mais vous pouvez très bien faire tourner la version classique (apache) en plus de la version sécurisée (apache-ssl). Toutefois, sachez que comme la version classique, la version ssl peut très bien gérer les domaines (nous verrons cela plus loin). Inutile donc de surcharger votre système avec deux serveurs.
Ajout de domaines
Nous ajoutons la gestion de plusieurs domaines dans notre Apache sécurisé avec l'utilisation de virtualhost dans le fichier de configuration de apache (httpd.conf)
vi /etc/apache-ssl/httpd.conf
Nous n'allons pas, dans ce tutoriel, entrer en détail dans la gestion multi-domaine avec Apache. Rajoutez donc autant de directives VirtualHost que de domaines souhaités.
<VirtualHost www.votredomaine.com:443>
ServerAlias votredomaine.com www.votredomaine.com
DocumentRoot /var/www/dossier/
ServerName www.votredomaine.com
SSLEnable
</VirtualHost>
Nous configurons ici notre VirtualHost pour le port 443 (port par défaut du protocole https) en lui donnant le nom de domaine qu'il doit gérer, le répertoire racine du site (DocumentRoot), et la valeur que renvoi le serveur (ServerName).
La mention SSLEnable ou SSLDisable permet simplement d'indiquer si le SSL doit être actif ou non. En théorie, comme nous écoutons le port 443 pour ce VirtualHost, on a tout intérêt à mettre SSLEnable car sinon on aura droit à une jolie page introuvable.
Cette mention peut également se trouver en dehors d'un VirtualHost. On peut donc enlever le SSL dans la configuration globale et l'autoriser dans un VirtualHost. D'ailleurs nous vous conseillons de procéder ainsi.
Si vous voulez gérer un domaine normal, c'est à dire sans protocole sécurisé, vous devez d'abord indiquer à Apache d'écouter le port 80 en rajoutant la directive
Listen 80
Ensuite configurez un VirtualHost avec un port 80. Ainsi vous pouvez gérer les deux protocoles avec une seule configuration d'Apache et un seul serveur.
<VirtualHost _default_:80>
SSLDisable
</VirtualHost>
Un peu plus loin l'installeur d'Apache nous a créé une clé SSL valide un mois.
Pour en refaire une autre, on utilise openssl qui a été installé en même temps qu'Apache.
On créé d'abord notre certificat, lorsque le prompt vous demande le Common Name, mettez le nom de votre certificat.
cd /etc/ssl
openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 365
On crée ensuite dans le même répertoire une clé SSL pour Apache. Ici lorsque le prompt vous demande votre Common Name faites bien attention à mettre le nom de votre machine (ou localhost).
openssl req -new -config ./openssl.cnf -nodes -out ./apache-req.pem -keyout
./apache-key.pem
Ensuite on signe notre clé SSL avec notre certificat.
openssl x509 -req -in apache-req.pem -out apache-cert.pem -signkey apache-key.pem -CA
cacert.pem -CAkey private/cakey.pem -CAcreateserial -days 365
La commande ci-dessus génère donc une clé et un certificat pour une durée de 365 jours. Mais nous avons créé ici deux fichiers alors que nous en avions qu'un seul à l'installation. En fait, il suffit simplement de changer quelques paramètres dans le httpd.conf d'apache.
vi /etc/apache-ssl/httpd.conf
On change la ligne SSLCertificateFile avec notre nouveau certificat
SSLCertificateFile /etc/apache-ssl/apache.pem
On dé-commente la ligne SSLCertificateKeyFile et on y ajoute le chemin de notre clé.
SSLCertificateKeyFile /etc/apache-ssl/apache-key.pem
Comme d'habitude, on redémarre notre Apache
apache-sslctl graceful
Normalement si vous avez respecté la procédure, Apache doit redémarrer avec les nouveaux paramètres. Vérifiez bien dans /var/log/apache-ssl/error.log si c'est le cas.
Source : https://joloridi.net/wikini/wakka.php?wiki=DebianCertificatSSL
--- A finir par User:HIK3