La suite de l'exemple se fait avec un nom de domaine et un certificat fournis et certifiés par Gandi .
Création du certificat avec Apache2 et mod_SSL
Il faut déjà s'assurer que mod_ssl est activé sur le serveur web. Après être passé en root ( su root ou sudo -i ) :
# a2enmod ssl
puis redémarrer le serveur pour terminer l'activation
# service apache2 restart
Pour la suite (après m'être demandé plus d'une fois où j'avais bien pu fourrer mes fichiers) , je conseille de se positionner dans dans /etc/ssl pour toute la procédure maois on fait comme on veut et on peut utiliser le répertoire de son choix pour y enregistrer les certificats ssl et les fichiers associés. C'est une question d'habitude. Là je donne MA manière de procéder
# cd /etc/ssl
y créer un répertoire dédié au domaine auquel le certificat est lié.
/etc/ssl# mkdir /etc/ssl/alter-it.org
puis se positionner à nouveau dans ce répertoire qui va accueillir au final le certificat et les éléments liés.
/etc/ssl# cd /etc/ssl/alter-it.org
Créer le .csr et le .key :
/etc/ssl/alter-it.org# openssl req -nodes -newkey rsa:2048 -keyout alter-it.org.key -out serveur.csr
A noter le alter-it.org.key qui est à personnaliser selon le nom de domaine à employer genre "tartempion.fr".key .. On peut mettre n'importe quoi mais ça fait plus propre avec le vrai nom de domaine. on peut laisser "serveur.csr" tel quel, ce fichier ne sert qu'à la création des .pem et .crt qui eux sont indispensables pour le bon fonctionnement de l'authentification.
Du coup on obtient le retour suivant avec des items à spécifier :
Generating a 2048 bit RSA private key
..+++
........+++
writing new private key to 'alter-it.org.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]:.
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Alter-IT
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:alter-it.org
Email Address []:admin@alter-it.org
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
L'élément clef est surtout le nom de domaine à la ligne "Common Name" .. le reste est à adapter selon ses propres infos mais n'est ( à priori) pas essentiel.
A ce stade un
On vérifie que le .csr et le .key sont bien créés:
/etc/ssl/alter-it.org# ls
alter-it.org.key serveur.csr
On affiche le contenu du .csr
/etc/ssl/alter-it.org# cat serveur.csr
On peut alors copier intégralement le retour directement depuis le terminal (Maj+ctrl+C) pour aller l'utiliser auprès de l'autorité de certification et obtenir les certificats ssl
Obtenir le certificat auprès du fournisseur
Exemple ici chez Gandi ( création/regénération de certificat)
On cliquote sur la demande de création/regénération pour le domaine concerné , puis on copie/colle le contenu de notre serveur.csr dans la zone dédiée, on signale qu'on l'a crée via apache2/ModSSL , on valide les conditions blabla et c'est parti pour le cycle de création/régénération du certificat ssl. En images ça donne ça :
Ici dans l'interface générale de gestion on va cliquoter sur la petite clé à droite du nom de domaine pour aller demander la création/regénération du certificat.

On est alors orienté vers l'écran permettant de copier/coller le contenu intégral de notre serveur.csr tel qu'obtenu ci-dessus. il faut aussi spécifier qu'on l'a crée avec apache2/mod_ssl et valider qu'on est bien d'accord avec les conditions de vente.

Une fois validé le processus , on attend la suite des événements à savoir l'arrivée d'un mail sur l'adresse d'admin associée au nom de domaine :

Il s'agit là de confirmer via la saisie d'un code donné dans le mail qu'on est bien au courant de la demande et qu'on est bien d'accord. On obéit sagement donc.
Une fois le processus terminé, on peut aller récupérer le certificat et le .pem associé :

On télécharge et on enregistre les deux fichiers.

Puis il ne reste plus qu'à les uplaoder sur le serveur web et les positionner dans notre /etc/ssl/alter-it.org créé précédemment. Personnellement j'uploade via sftp et nautilus depuis Ubuntu. Au final le contenu complet du répertoire en question doit être ça:
/etc/ssl/alter-it.org# ls
cert-alter-it.org.crt GandiStandardSSLCA.pem alter-it.org.key serveur.csr
Le .csr est dorénavant inutile et on peut le supprimer si on le souhaite. On a donc nos él&ments liés à la certification. Reste maintenant à dire à Apache2 comment les utiliser.
Configuration apache2 pour le https
D'abord quelques modifications ) /etc/apache2/ports.conf pour s'assurer qu'apache écoute sur le port 443 et rajouter la directive "NameVirtualHost *:443"
/etc/ssl/alter-it.org# nano /etc/apache2/ports.conf
Le contenu de /etc/apache2/ports.conf une fois modifié:
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Comme spécifié dans les commentaires du fichier de conf ci dessus, on va modifier le /etc/apache2/sites-available/default-ssl qui commence par ça :
<IfModule mod_ssl.c>
<VirtualHost_default_:443>
pour y mettre ça à la place :
<IfModule mod_ssl.c>
<VirtualHost *:443>
Enfin on l'active :
/etc/ssl/alter-it.org# a2ensite default-ssl
et on recharge la configuration apache2 :
/etc/ssl/alter-it.org# service apache2 reload
On peut alors créer le Virtualhost dédié à l'accès en https à notre alter-it.org ( ou rajouter une partie dédiée au https dans le virtualhost existant).
/etc/ssl/alter-it.org# nano /etc/apache2/sites-available/vhost_alter-it.org
Le nom vhost_alter-it.org est un exemple, on peut choisir le nom qu'on veut.
Exemple de contenu de base avec les éléments liés au https:
<VirtualHost *:443>
ServerName alter-it.org
ServerAdmin admin@alter-it.org
ErrorLog /var/log/apache2/alter-it.org.log
CustomLog /var/log/apache2/alter-it.org.log combined
DocumentRoot /var/www/exemple
SSLengine on
SSLCertificateFile /etc/ssl/alter-it.org/cert-alter-it.org.crt
SSLCertificateKeyFile /etc/ssl/alter-it.org/alter-it.org.key
SSLCACertificateFile /etc/ssl/alter-it.org/GandiStandardSSLCA.pem
</VirtualHost>
La partie SSL permet de signifier à Apache2 l'endroit où il doit aller chercher ses ouailles pour certifier les connexions.
/etc/ssl/alter-it.org# a2ensite vhost_alter-it.org
puis
/etc/ssl/alter-it.org# service apache2 reload
Et on doit normalement avoir un accès certifié via l'URL https://alter-it.org/ au contenu de /var/www/exemple.
Si vous tombez là dessus et que ça ne fonctionne pas, vous n'avez quà vous en prendre à vous même vous pouvez me signaler les erreurs (ce qui sera fortement apprécié) et/ou poser des questions en commentaire ;)
3 commentaires
mercredi 29 janvier 2014 à 13:02 salam a dit : #1
jeudi 30 janvier 2014 à 22:56 Sorrodje a dit : #2
mardi 01 avril 2014 à 10:33 Couz a dit : #3