Où sommes nous ?

Securisation d un site web par certificat

encore plus sécurisé que le mot de passe

La sécurisation d'une partie d'un site web passe généralement par un formulaire d'authentification ... hautement nonsécurisé s'il utilise la méthode BASIC vu que le mot de passe transitera sur le réseau en clair. On gagne en sécurité en utilisant la méthode DIGEST et/ou en passant par https.

Dans ce billet, je vais exposer une méthode plus sûre (mais plus confidentielle) qui consiste à faire l'authentification par clef SSL comme on peut le faire aussi pour se logger aux serveurs.

Génération du certificat pour le serveur

La gestion des certificats est constituée d'une chaine de tiers de confiances dont le rôle est de valider que nous sommes bien ceux que nous prétendons être ... et ils le font payer relativement cher.
Ici, nous nous affranchirons de cette étape couteuse en créant un certificat auto-signé en utilisant OpenSSL qui devra être évidement installé sur votre machine.

 ~/Projets/certs $ openssl req -new -x509 -days 3650 -nodes -out destroyedlolo.crt -keyout destroyedlolo.key
Generating a 2048 bit RSA private key
.........................+++
....................................................................+++
writing new private key to 'destroyedlolo.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) []:Annecy
Organization Name (eg, company) [Internet Widgits Pty Ltd]:destroyedlolo.info
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:destroyedlolo.info
Email Address []:

Si ça vous gène vraiment d'utiliser des certificats auto-signés, vous pouvez aller voir du côté de let's encrypt qui est une Certificat Autority ... gratuite.

Configuration d'Apache

On crée un fichier de conf minimum : /etc/apache2/vhosts.d/01_destroyedlolo_ssl_vh.conf

<IfDefine SSL>
Listen 8443

<VirtualHost *:8443>
ServerName destroyedlolo.info
SSLEngine on
SSLCertificateFile "/home/laurent/Projets/certs/destroyedlolo.crt"
SSLCertificateKeyFile "/home/laurent/Projets/certs/destroyedlolo.key"
</VirtualHost>
</IfDefine>

et on ajoute SSL aux options de lancement d'apache (fichier : /etc/conf.d/apache2)

APACHE2_OPTS="-D INFO -D LANGUAGE -D PHP -D STATUS -D USERDIR -D SSL"

et on redémarre apache

/etc/init.d/apache2 restart

Est-ce que ca marche

Il est temps de tester notre site depuis un navigateur : celui-ci n'aime pas les certificats auto-signés, mais une fois une exception mise en place, ça fonctionne.

Génération de la client "cliente"

openssl pkcs12 -export -inkey destroyedlolo.key -in destroyedlolo.crt -out destroyedlolo.p12

Le fichier généré, destroyedlolo.p12, est la clef à importer dans le navigateur.

Il ne reste qu'à générer la clef autorisant l'utilisateur sur le CA généré.


Visitez :
La liste de nos voyages
Nos sorties Ski et rando
Copyright Laurent Faillie 2001-2018
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso.
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution.
Visites durant les 7 derniers jours Nombre de visites au total.

Vous pouvez laissez un commentaire sur cette page.