Authentification forte avec Apache et certificats délivrés par une PKI
Ce type d'authentification est idéale pour l'accès à des ressources internet par votre personnel. Les offres commerciales correspondantes sont décrites dans la section PKI de notre comparatif, mais vous pouvez aussi utiliser des certificats client / utilisateur disponibles à l'unité.
Préalable: votre serveur doit être correctement configuré en tant que serveur SSL.
Dans votre VirtualHost SSL, placez deux instructions:
SSLCARevocationPath conf/ssl.crl/ SSLCACertificateFile conf/chain-mon-pki.txt
L'instruction SSLCARevocationPath concerne la révocation. Voir
Gestion des listes de révocation dans Apache
pour mettre en place la gestion de la
revocation.
L'instruction SSLCACertificateFile décrit la chaine de certification de votre PKI.
Le fichier indiqué doit contenir la chaine de certification utilisé pour émettre vos certificats
PKI. Pour constituer ce fichier, consultez Certificats intermédiaires
pour trouver l'autorité qui signe vos certificats et stockez dans un fichier texte le certificat
affiché dans la page. Puis utilisez le lien "chaîné avec" pour remonter au niveau supérieur et
ajoutez le certificat trouvé en dessous du certificat précédent. Ainsi de suite jusqu'à ce qu'il
n'y ait plus de lien supérieur. Placez le fichier ainsi constitué dans
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 à spécifier le filtre qui permettra à tous vos utilisateurs de se connecter.
SSLRequire %{SSL_CLIENT_I_DN} eq "/C=FR/ST=Calvados/L=Caen/O=TBS INTERNET/OU=Terms and Conditions: http://www.tbs-internet.com/CA/repository/OU=TBS INTERNET CA/CN=TBS X509 CA persona" \ and %{SSL_CLIENT_S_DN_O} eq "NOM-DE-LA-SOCIETE" \ and %{SSL_CLIENT_S_DN_OU} eq "personnel interne / internal staff" \ and %{SSL_CLIENT_S_DN_C} eq "FR"
Dans cette expression, la première ligne vérifie l'autorité qui a émis le certificat
(si vous avez suivi notre méthode et autorisé une seule autorité de certification, ce
test redondant. Il est par contre utile si vous avez autorisé plusieurs CA.).
La seconde ligne vérifie que ce certificat est pour votre nom de société.
La troisième ligne vérifie que ce certificat est pour votre unité d'organisation au sein
de votre société.
La quatrième ligne vérifie que ce certificat est pour une organisation en France.
Etc. Vous aurez compris que notre filtre exemple autorise tous les certificats émis pour une unité d'organisation de votre société. Vous pouvez écrire des instructions plus strictes, par exemple pour autoriser que certains utilisateurs de votre organisation, rajoutez:
%{SSL_CLIENT_S_DN_Email} in {"root@domaine.com", "system@domaine.com", "chef@domaine.com"}