Certificats client d'authentification

Pourquoi faire?

Il est de plus en plus souvent nécessaire d'authentifier des utilisateurs par autre chose qu'un username + password (trop facilement duplicable). Un certificat a l'avantage de pouvoir être installé sur un poste de travail, et être non exportable (notamment dans IE 6) et utilisable après déverouillage (Mozilla). Il peut aussi être placé sur support matériel.

Il peut aussi être requis par la loi d'utiliser des certificats électronique pour authentifier des tiers et signer des documents. En particulier pour de nombreuses dématérialisations.

Mise en place - coté serveur

Pour mettre en place ce test, nous avons utilisé un serveur SSL sous Apache-ModSSL configuré avec un certificat SSL classique. Ici nous avons choisi de faire un site uniquement accessible avec un certificat client qui exige un certificat client:

<VirtualHost 213.186.35.102:443>
# activation du SSL
SSLEngine On
# configuration du certificat TBS X509 OmniDomaine
SSLCertificateFile /etc/http/conf/ssl.crt/wild.pitux.com.crt
SSLCertificateKeyFile /etc/http/conf/ssl.key/wild.pitux.com.key
SSLCACertificateFile /etc/http/conf/trusted_ca_certs/comodo2006.crt
# configuration de l'exigence de présentation d'un certificat client
SSLVerifyClient require
# emplacement des racines des autorités de certification autorisées
SSLCACertificatePath /usr/share/ssl/valid-ca/

# emplacement des CRL (liste des certificats revoqués)

SSLCARevocationPath /usr/share/ssl/crl-ca/
# longueur du chainage, valeur recommandée
SSLVerifyDepth 4
# autres options
SSLOptions +CompatEnvVars
# le classique apache
DocumentRoot /home/http/testcert
ServerName testcert.pitux.com
# logs standard
ErrorLog /etc/http/logs/SSL/pitux-testcert-ssl-error_log
TransferLog /etc/http/logs/SSL/pitux-testcert-ssl-access_log
# fichier log personnalisé
</VirtualHost>

Dans le répertoire /usr/share/ssl/valid-ca/ nous avons mis les certificats racine des autorités dont nous voulons accepter les certificats et leur hash. Voir l'archive valid-ca.tgz

Dans le répertoire /usr/share/ssl/crl-ca. nous avons mis les CRL au format PEM avec leur hash de quelques autorités. Les CRL sont les listes des certificats révoqués, donc non-valide. Il faudrait bien évidement mettre toutes les CRL et s'assurer qu'un cron les mets à jour régulièrement. Voir l'archive clr-ca.tgz


Mise en place - coté client

Nous nous sommes placés dans la logique de fournir le certificat client à l'utilisateur. Pour se faire nous avons commandé un certificat TBS X509 Sign&Login Test pour la société TBS INTERNET que nous voulons identifier avec son numéro de SIREN (440443810). Pour se faire, nous imposons que le numéro de SIREN soit placé dans le champ CN du certificat et nous renseignons le champ OU avec le format exigé par la PRIS v2 (ICD + espace + identification de la société).

L'opération effectuée avec Internet Explorer est très simple, on se contente de remplir les champs!


Nous avons récupéré le certificat fabriqué avec Internet Explorer et il est apparu dans la liste des certificats personnels de l'utilisateur.

A cet instant, nous disposons d'un certificat client fortement authentifié. Il reste à le transmettre à l'utilisateur final pour utilisation dans son Internet Explorer ou Firefox.

On utilise la fonction Exporter de Internet Explorer (Outils / Options Internet / Onglet Contenu / bouton Certificats / bouton Exporter) pour fabriquer un fichier .pfx. Il faut choisir d'exporter la clef privée, d'inclure tous les certificats de la chaîne et ne pas activer la protection renforcée si l'on souhaite l'importer dans Firefox.

Pour l'importer dans Internet Explorer (testé avec une version 6):

Outils / Options Internet / Onglet Contenu / bouton Certificats / bouton Importer
Sélectionnez simplement le fichier pfx, puis donnez son mot de passe.
Le certificat s'importe!

Pour l'importer dans Mozilla (testé avec une version 1.7.3):

Edition / Preferences / Securité / bouton Gestion Certificats / bouton importer
Sélectionnez simplement le fichier pfx, puis donnez son mot de passe.
Le certificat s'importe!

Mise en place - le test!

Il ne reste plus qu'à aller se connecter au site web préparé précedemment. Il faut un certificat client pour accéder à cette page:
https://testcert.pitux.com/php/testcrypto.php

Vous verrez alors la confirmation de votre connexion SSL avec l'affichage des principaux éléments du certificat client. Un avertissement s'affichera si le certificat n'est pas authentifié. La présentation du certificat marche parfaitement avec IE et Mozilla/Firefox!

Débouchés

Pour faire cet affichage, nous utilisons les variables d'environnement passées par Apache au langage de gestion de page. Ca peut être Php, Perl, ou même un simple CGI. Vous pouvez donc très facilement ajouter une authentification forte à votre applicatif en vérifiant:
Vous pouvez facilement assurez une tracabilité des opérations en utilisant les logs étendus d'Apache: il suffit par exemple d'ajouter sur chaque ligne le CN du certificat client! Voir: http://www.modssl.org/docs/2.8/ssl_reference.html#ToC26

Nous proposons davantage de documentation dans notre FAQ.

Exploitation commerciale

TBS INTERNET vous propose son expertise pour délivrer des certificats serveur et client fortement authentifiés. Les applications sont multiples!

Pour la dématérialisation, vous pouvez générer vous même les clefs de vos clients depuis votre plateforme et leur transmettre un simple fichier résultant. Grâce à cela, vous pouvez séquestrer les clefs chez vous pour réaliser les opérations de signature électronique en leur nom, évitant ainsi de déployer des équipements de signature chez vos clients!

Nous disposons à notre catalogue d'une gamme de produits avec différents niveau de garantie pour satisfaire vos besoins à partir de 39 EUR HT pour 1 an. N'hésitez pas à nous contacter:

TBS INTERNET - Services Certificats
22 rue de Bretagne
14000 CAEN
France

Tel: +33-2-7630-5900 (10h-13h & 14h-18h lundi-vendredi)
Fax: +33-1-7372-4584




comparatif | certificats Thawte | certificats VeriSign | certificats TBS X509 

© TBS Internet, tous droits réservés. Toute reproduction, copie ou mirroring interdit.
Revision date: 28 Aug 2006
URL: http://testcert.pitux.com/