Authentification forte avec Apache et certificats délivrés par de multiples CA
Si vous ne pouvez pas imposez à vos utilisateurs d'utiliser des certificats X509 Sign & Login TBS (simples et peu couteux!), alors vous aurez à gérer de multiples certificats.Préalable: votre serveur doit être correctement configuré en tant que serveur SSL.
La problématique de travailler avec des autorités multiples et possiblement diverses, c'est qu'il va falloir référencer les autorités que vous autorisez. C'est nécessaire car il faut vérifier que la politique de certification de ces autorités est compatible avec ce que vous voulez faire (qualité de l'authentification). De plus, il vous faudra gérer les CRLs de ces CA. Nous vous conseillons donc de vous limiter en nombre!
Dans votre VirtualHost SSL, placez deux instructions:
SSLCARevocationPath conf/ssl.crl/ SSLCACertificateFile conf/chain-mes-ca.txtL'instruction SSLCACertificateFile pointe vers un fichier contenant la liste des autorités de certification que vous aurez référencé. Notez qu'il faut placer la chaine complète de chaque CA (en évitant les doublons). Pour constituer ce fichier, consultez Certificats intermédiaires pour trouver les autorités autorisés (et leur chaine complète) ou adressez vous directement au CA. Placez le fichier ainsi constitué dans L'instruction SSLCARevocationPath concerne la révocation. De même, il faudra prévoir la gestion de la révocation pour chaque CA. Voir Gestion des listes de révocation dans Apache
Assurez vous que votre Apache soit compilé avec un openssl version 0.9.7 récent, ou supérieur.
Maintenant au niveau d'un répertoire, il faut placer
SSLRequireSSL SSLVerifyClient require SSLVerifyDepth 4pour activer la demande de certificat client, et spécifier la longueur maxi de ma chaîne.
Reste à limiter l'accès à un groupe d'utilisateurs, car on ne peut pas laisser rentrer tous les porteurs d'un certificat d'une autorité publique! On n'utilisera souvent pas un filtre Apache, car c'est trop statique, même si c'est possible.
Authentification hors d'Apache
Vous utilisez un langage de programmation pour se logger dans une application (ouverture de session). Traditionnellement vous utilisez un username + password pour retrouver l'utilisateur dans votre SI et l'authentifier.Vous pouvez utiliser le certificat et ses champs pour authentifier l'utilisateur. Pour se faire il est recommandé d'étendre votre table contenant les utilisateurs pour rajouter:
- un identifiant de l'autorité de certification (par exemple le groupe de champs issuer)
- un identifiant du champ sur lequel comparer (le plus souvent le champ email)
- le contenu du champ identifiant qui devra être comparé
(identifiant du CA, type champ, contenu)Dès que vous trouvez une correspondance, vous avez identifié l'utilisateur avec certitude!
Authentification dans Apache
Si vous ne souhaitez pas gérer l'acceptation du certificat client au niveau applicatif, vous pouvez utiliser Apache.Le mécanisme proposé comporte notamment des limitations. En effet vous ne pouvez filtrer que sur la partie subject (objet) du certificat client, ce qui présente un risque si plusieurs CA sont autorisées! En effet, qu'est ce qui garanti qu'un autre CA n'émettera pas un certificat avec le même objet mais à un utilisateur différent?
Dernière modification le 11/06/2020 09:43:48 --- [Chercher]