L’authentification par certificats permet de remplacer le traditionnel couple login/password dans un environnement doté de PKI.
Le certificat doit être reconnu par le serveur web, que ce soit par le biais du fait que le CA authentifie côté serveur et qu’on peut également filtrer les utilisateurs par données présentes dans le certificat.
Entre autres, cela permet également d’utiliser des supports externes au clavier pour reconnaître les utilisateurs, comme des lecteurs de carte à puce.
Nous allons voir ici comment activer l’authentification par certificat sous Apache.
Ouvrez le fichier de votre virtualhost favori et activez tout d’abord le support HTTPS en ajoutant une clef publique, privée et optionnellement une chaîne de certificats:
SSLEngine on
SSLCertificateFile "/etc/ssl/www.unix-experience.fr.crt"
SSLCertificateKeyFile "/etc/ssl/www.unix-experience.fr.key"
SSLCertificateChainFile "/etc/ssl/myCA.pem"
Maintenant que le chiffrement des communications est assuré, vous pouvez sécuriser l’accès au Virtualhost en rajoutant les lignes suivantes:
SSLVerifyDepth 3
SSLVerifyClient require
SSLCACertificateFile "/etc/ssl/myCA.pem"
SSLOptions +StdEnvVars
Détaillons les différentes options:
Maintenant que votre serveur est capable d’authentifier les certificats provenant du CA myCA.pem, il vous faut générer des certificats utilisant un CN (Common Name) correspondant à l’adresse mail de vos utilisateurs et une application qui soit pleinement compatible en face (un SSO comme Shibboleth par exemple).
Vous savez désormais comment configurer Apache pour authentifier des clients par certificats. Il ne reste plus qu’à mettre en place une PKI.