SUPPORT

Un problème de certificat ? Besoin d'être dépanné rapidement ? Nos ingénieurs répondent à vos questions.

0 897 690 444 Service 0,80 €/min +prix appel
Menu
picture of tbs certificates
picture of tbs certificates
Les produits
Notre gamme
Partenaires
Support
Numéro vert
Focus


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.txt
L'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 4
pour 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é
Fort de cela, dans votre langage préféré, vous allez récupérer des champs fournis par Apache qui décomposent le certificat client pour faciliter son exploitation (voir la doc pour Apache2.4+). Préparez ensuite une requête sur le triplet:
(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?