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.