Certificats pour les clients.

Un certificat client est un certificat qui identifie l'utilisateur d'un navigateur web, et qui a vocation à identifier avec certitude un unique individu. Ce certificat est basé sur une clé publique/privée qui est stockée par le navigateur (à l'avenir, cette clé sera probablement sur carte à puce). De la même façon qu'un certificat pour serveur n'a pas de sens tant qu'il n'est pas authentifié par un tiers, le certificat client à besoin d'être signé.

On peut différencier deux types de certificats suivant leurs signatures: les certificats signés par un serveur ou un organisme local (par exemple l'entreprise qui exploite un serveur SSL) et les certificats signés par un tiers certificateur reconnu de tous.

Les certificats signés par un organisme local prennent tout leur sens dans la cadre d'un intranet/extranet. Ainsi certaines entreprises au lieu de donner des couples username/password à leurs employés leur font générer une clé SSL qu'ils vont ensuite signer.

Il suffira alors d'indiquer au serveur de n'accepter les connexions SSL que de possesseurs de certificats signés par l'entreprise. On peut bien sur aller plus loin et utiliser les champs que contiennent les certificats pour créer des ACLs, et autoriser l'accès à des zones spécifiques du serveur en fonction de l'appartenance à tel ou tel service, par exemple.

Ces certificats signés par une entité locale ont leurs limites dès qu'il s'agit de travailler avec des clients d'origines différentes. Ainsi un consommateur qui utilise des banques et des centres commerciaux SSL se retrouve rapidement avec des dizaines de certificats différents, fournis par chacun des serveurs. Aussi les certificats signés localement ne conviennent pas au grand public.

La solution est que chaque individu souhaitant s'identifier sur plusieurs serveurs utilise un certificat signé par un tiers de certification. Ce dernier aura effectué toutes les vérifications nécessaires pour prouver que le certificat est authentique (qu'il identifie bien la bonne personne). L'individu fournira alors aux serveurs qu'il veut utiliser son certificat personnel signé par le tiers. Le serveur utilisera alors ce certificat pour assurer la sécurité (l'affectera dans les ACLs qui conviennent). L'utilisateur n'aura à stocker qu'un seul certificat (le sien, qui est en quelque sorte sa signature électronique) et n'aura à retenir qu'un seul mot de passe, celui qui protège son certificat.

Ce système simplifie la vie de l'utilisateur, mais aussi de l'administrateur des serveurs. En effet, même si à l'échelle d'une entreprise il est simple d'attribuer avec certitude un certificat à la bonne personne, ce n'est plus le cas pour un magasin virtuel. Comment être sûr à distance que l'on signe le certificat de son client (que l'on n'a jamais vu)?

Ce problème d'attribution des certificats signés se pose dès lors que les acteurs ne sont pas locaux et ne se connaissent pas. Il est donc nécessaire d'utiliser un tiers certificateur. Il existe d'ores et déjà plusieurs tiers qui fournissent des certificats SSL clients, dont Thawte.