Partager via


Sélection et validation de certificat

Les System.Net classes prennent en charge plusieurs façons de sélectionner et de valider System.Security.Cryptography.X509Certificates les connexions SSL (Secure Socket Layer). Un client peut sélectionner un ou plusieurs certificats pour s’authentifier auprès d’un serveur. Un serveur peut exiger qu’un certificat client ait un ou plusieurs attributs spécifiques pour l’authentification.

Définition

Un certificat est un flux d’octets ASCII qui contient une clé publique, des attributs (tels que le numéro de version, le numéro de série et la date d’expiration) et une signature numérique d’une autorité de certification. Les certificats sont utilisés pour établir une connexion chiffrée ou pour authentifier un client auprès d’un serveur.

Sélection et validation du certificat client

Un client peut sélectionner un ou plusieurs certificats pour une connexion SSL spécifique. Les certificats clients peuvent être associés à la connexion SSL à un serveur web ou à un serveur de messagerie SMTP. Un client ajoute des certificats à une collection d'objets de classe X509Certificate ou X509Certificate2. À l’aide de l’e-mail comme exemple, la collection de certificats est une instance d’un X509CertificateCollection associée à la propriété ClientCertificates de la classe SmtpClient. La HttpWebRequest classe a une propriété similaire ClientCertificates .

La principale différence entre la X509Certificate classe et la X509Certificate2 classe est que la clé privée doit résider dans le magasin de certificats de la X509Certificate classe.

Même si des certificats sont ajoutés à un regroupement et associés à une connexion SSL spécifique, aucun certificat n’est envoyé au serveur, sauf si le serveur les demande. Si plusieurs certificats clients sont définis sur une connexion, le meilleur est utilisé en fonction d’un algorithme qui considère la correspondance entre la liste des émetteurs de certificats fournis par le serveur et le nom de l’émetteur de certificat client.

La SslStream classe offre encore plus de contrôle sur l’établissement d’une liaison SSL. Un client peut spécifier un délégué pour choisir le certificat client à utiliser.

Un serveur distant peut vérifier qu’un certificat client est valide, actif et signé par l’autorité de certification appropriée. Un délégué peut être ajouté au ServerCertificateValidationCallback pour appliquer la validation des certificats.

Sélection du certificat client

Le .NET Framework sélectionne le certificat client à présenter au serveur de la manière suivante :

  1. Si un certificat client a été présenté précédemment au serveur, le certificat est mis en cache lors de la première présentation et est réutilisé pour les demandes de certificat client suivantes.

  2. Si un délégué est présent, utilisez toujours le résultat du délégué comme certificat client à sélectionner. Essayez d’utiliser un certificat mis en cache si possible, mais n’utilisez pas d’informations d’identification anonymes mises en cache si le délégué a retourné null et que la collection de certificats n’est pas vide.

  3. S’il s’agit du premier défi pour un certificat client, l’infrastructure énumère les certificats dans X509Certificate ou les X509Certificate2 objets de classe associés à la connexion, en recherchant une correspondance entre la liste des émetteurs de certificats fournis par le serveur et le nom de l’émetteur de certificat client. Le premier certificat correspondant est envoyé au serveur. Si aucun certificat ne correspond ou si la collection de certificats est vide, les informations d’identification anonymes sont envoyées au serveur.

Outils pour la configuration des certificats

Un certain nombre d’outils sont disponibles pour la configuration des certificats client et serveur.

L’outilWinhttpcertcfg.exe peut être utilisé pour configurer des certificats clients. L’outilWinhttpcertcfg.exe est fourni en tant qu’outil avec le Kit de ressources Windows Server 2003. Cet outil est également disponible en téléchargement dans le cadre des outils du Kit de ressources Windows Server 2003 à www.microsoft.com.

L’outilHttpCfg.exe peut être utilisé pour configurer des certificats de serveur pour la HttpListener classe. L’outil HttpCfg.exe est fourni comme l’un des outils de support pour Windows Server 2003 et Windows XP Service Pack 2. HttpCfg.exe et les autres outils de support ne sont pas installés par défaut sur Windows Server 2003 ou Windows XP. Sur Windows Server 2003. les outils de support sont installés séparément du dossier et du fichier suivants sur le CD-ROM Windows Server 2003 :

\Support\Tools\Suptools.msi

Pour une utilisation avec Windows XP Service Pack 2, les outils de support Windows XP sont disponibles en téléchargement à partir de www.microsoft.com.

Le code source vers une version de l’outil HttpCfg.exe est également fourni sous forme d’exemple avec le Kit de développement logiciel (SDK) Windows Server. Le code source de l’exemple deHttpCfg.exe est installé par défaut avec les exemples de mise en réseau dans le cadre du Kit de développement logiciel (SDK) Windows sous le dossier suivant :

C :\Program Files\Microsoft SDKs\Windows\v1.0\Samples\NetDS\http\serviceconfig

Outre ces outils, les X509Certificate classes et X509Certificate2 les classes fournissent des méthodes pour charger un certificat à partir du système de fichiers.

Voir aussi