Certificaatselectie en -validatie

De System.Net klassen ondersteunen verschillende manieren om SSL-verbindingen (Secure Socket Layer) te selecteren en te valideren System.Security.Cryptography.X509Certificates . Een client kan een of meer certificaten selecteren om zichzelf te verifiëren bij een server. Een server kan vereisen dat een clientcertificaat een of meer specifieke kenmerken voor verificatie heeft.

Definitie

Een certificaat is een ASCII-bytestroom die een openbare sleutel, kenmerken (zoals versienummer, serienummer en vervaldatum) en een digitale handtekening van een certificeringsinstantie bevat. Certificaten worden gebruikt om een versleutelde verbinding tot stand te brengen of om een client te verifiëren bij een server.

Selectie en validatie van clientcertificaat

Een client kan een of meer certificaten voor een specifieke SSL-verbinding selecteren. Clientcertificaten kunnen worden gekoppeld aan de SSL-verbinding met een webserver of een SMTP-e-mailserver. Een client voegt certificaten toe aan een verzameling X509Certificate of X509Certificate2 klasseobjecten. Als u e-mail als voorbeeld gebruikt, is de certificaatverzameling een exemplaar van een X509CertificateCollection) dat is gekoppeld aan de ClientCertificates eigenschap van de SmtpClient klasse. De HttpWebRequest klasse heeft een vergelijkbare ClientCertificates eigenschap.

Het belangrijkste verschil tussen de X509Certificate en de X509Certificate2 klasse is dat de persoonlijke sleutel zich in het certificaatarchief voor de X509Certificate klasse moet bevinden.

Zelfs als certificaten worden toegevoegd aan een verzameling en zijn gekoppeld aan een specifieke SSL-verbinding, worden er geen certificaten naar de server verzonden, tenzij de server deze aanvraagt. Als er meerdere clientcertificaten zijn ingesteld voor een verbinding, wordt het beste certificaat gebruikt op basis van een algoritme dat de overeenkomst beschouwt tussen de lijst met certificaatverleners die zijn opgegeven door de server en de naam van de uitgever van het clientcertificaat.

De SslStream klasse biedt nog meer controle over de SSL-handshake. Een client kan een gemachtigde opgeven om te kiezen welk clientcertificaat moet worden gebruikt.

Een externe server kan controleren of een clientcertificaat geldig, actueel en ondertekend is door de juiste certificeringsinstantie. Een gemachtigde kan worden toegevoegd aan de ServerCertificateValidationCallback gemachtigde om certificaatvalidatie af te dwingen.

Selectie van clientcertificaat

Het .NET Framework selecteert het clientcertificaat dat op de server moet worden weergegeven op de volgende manier:

  1. Als een clientcertificaat eerder aan de server is gepresenteerd, wordt het certificaat in de cache opgeslagen wanneer het voor het eerst wordt gepresenteerd en opnieuw wordt gebruikt voor volgende clientcertificaataanvragen.

  2. Als er een gemachtigde aanwezig is, gebruikt u altijd het resultaat van de gemachtigde als het clientcertificaat dat u wilt selecteren. Probeer indien mogelijk een certificaat in de cache te gebruiken, maar gebruik geen anonieme referenties in de cache als de gemachtigde null heeft geretourneerd en de certificaatverzameling niet leeg is.

  3. Als dit de eerste uitdaging is voor een clientcertificaat, inventariseert het Framework de certificaten in X509Certificate of de X509Certificate2 klasseobjecten die aan de verbinding zijn gekoppeld, op zoek naar een overeenkomst tussen de lijst met certificaatverleners die door de server en de naam van de certificaatverlener van het clientcertificaat worden verstrekt. Het eerste certificaat dat overeenkomt, wordt naar de server verzonden. Als er geen certificaatovereenkomsten zijn of als de certificaatverzameling leeg is, wordt er een anonieme referentie naar de server verzonden.

Hulpprogramma's voor certificaatconfiguratie

Er zijn een aantal hulpprogramma's beschikbaar voor client- en servercertificaatconfiguratie.

Het hulpprogramma Winhttpcertcfg.exe kan worden gebruikt om clientcertificaten te configureren. Het hulpprogramma Winhttpcertcfg.exe wordt geleverd als een van de hulpprogramma's met de Windows Server 2003 Resource Kit. Dit hulpprogramma is ook beschikbaar als download als onderdeel van de Resource Kit Tools van Windows Server 2003 op www.microsoft.com.

Het hulpprogramma HttpCfg.exe kan worden gebruikt om servercertificaten voor de HttpListener klasse te configureren. Het hulpprogramma HttpCfg.exe wordt geleverd als een van de ondersteuningshulpprogramma's voor Windows Server 2003 en Windows XP Service Pack 2. HttpCfg.exe en de andere ondersteuningshulpprogramma's zijn niet standaard geïnstalleerd op Windows Server 2003 of Windows XP. Op Windows Server 2003. de ondersteuningshulpprogramma's worden afzonderlijk geïnstalleerd van de volgende map en het bestand op de cd-rom van Windows Server 2003:

\Support\Tools\Suptools.msi

Voor gebruik met Windows XP Service Pack 2 zijn de Windows XP-ondersteuningshulpprogramma's beschikbaar als download van www.microsoft.com.

De broncode voor een versie van het hulpprogramma HttpCfg.exe wordt ook geleverd als voorbeeld met de Windows Server SDK. De broncode voor het HttpCfg.exe voorbeeld wordt standaard geïnstalleerd met de netwerkvoorbeelden als onderdeel van de Windows SDK onder de volgende map:

C:\Program Files\Microsoft SDK's\Windows\v1.0\Samples\NetDS\http\serviceconfig

Naast deze hulpprogramma's biedt de X509Certificate en X509Certificate2 klassen methoden voor het laden van een certificaat uit het bestandssysteem.

Zie ook