diff --git a/HowtoApache.md b/HowtoApache.md index 502f65e7..e55290b4 100644 --- a/HowtoApache.md +++ b/HowtoApache.md @@ -335,6 +335,42 @@ qu'à partir de Debian 8. `SSL_ERROR_RX_RECORD_TOO_LONG` = possible que la résolution IPv6 ne se fait pas correctement. +### SSL Client + +Il est aussi possible de faire du SSL client pour authentifier celui-ci. Pour cela vous devez avoir une CA en mesure d'émetre des certificats SSL pour vos clients. Vous pouvez utiliser notre outil [Shellpki](https://gitea.evolix.org/evolix/shellpki) + +Pré-requis : Le vhost doit être en SSL. + +On va alors ajouter les directives suivante dans le(s) vhosts qui doivent faire de l'authentification client : + +~~~ + + # SSL Client, CA example.net + SSLCACertificateFile /etc/ssl/certs/example.net_CA_R01.pem + #SSLCARevocationFile /etc/ssl/crl/example.net_CA_R01.pem + SSLVerifyClient require + SSLVerifyDepth 1 +~~~ + +Explication rapide des directives : + +* `SSLCACertificateFile` : Chemin vers le certificat faisant autorité +* `SSLCARevocationFile` : Chemin vers la liste de révocation +* `SSLVerifyClient` : + * *require* : Le client **doit** présenter un certificat valide + * *optional* : Le client **peut** présenter un certificat valide + * *none* : Le client n'as pas à présenter un certificat valide +* `SSLVerifyDepth` : La profondeur de vérification + + +Après, au travers de la configuration, on a accès aux variables donnant des informations sur le certificat client. On peut ainsi faire facilement des autorisations avec des expressions régulières pour autoriser un groupe de client selon le CN du certificat : + +~~~ + Require expr "%{SSL_CLIENT_S_DN_CN} =~ /.*\.france\.example\.net/" +~~~ + +Voir la documentation du [module SSL d'Apache](https://httpd.apache.org/docs/2.4/fr/mod/mod_ssl.html) + ## Logs