Udostępnij za pośrednictwem


Wybór i sprawdzanie poprawności certyfikatu

Klasy System.Net obsługują kilka sposobów wybierania i weryfikowania System.Security.Cryptography.X509Certificates połączeń Secure Socket Layer (SSL). Klient może wybrać co najmniej jeden certyfikat, aby uwierzytelnić się na serwerze. Serwer może wymagać, aby certyfikat klienta miał co najmniej jeden określony atrybut do uwierzytelniania.

Definicja

Certyfikat to strumień bajtów ASCII, który zawiera klucz publiczny, atrybuty (takie jak numer wersji, numer seryjny i data wygaśnięcia) oraz podpis cyfrowy z urzędu certyfikacji. Certyfikaty służą do nawiązywania szyfrowanego połączenia lub uwierzytelniania klienta na serwerze.

Wybór i walidacja certyfikatu klienta

Klient może wybrać co najmniej jeden certyfikat dla określonego połączenia SSL. Certyfikaty klienta można skojarzyć z połączeniem SSL z serwerem internetowym lub serwerem poczty SMTP. Klient dodaje certyfikaty do kolekcji X509Certificate obiektów klasy lub X509Certificate2 . Na przykład przy użyciu poczty e-mail kolekcja certyfikatów jest wystąpieniem X509CertificateCollectionklasy ) skojarzonym z ClientCertificates właściwością SmtpClient klasy . Klasa HttpWebRequest ma podobną ClientCertificates właściwość.

Podstawową różnicą między X509Certificate klasą a X509Certificate2 jest to, że klucz prywatny musi znajdować się w magazynie certyfikatów dla X509Certificate klasy.

Nawet jeśli certyfikaty są dodawane do kolekcji i skojarzone z określonym połączeniem SSL, żadne certyfikaty nie będą wysyłane do serwera, chyba że serwer ich zażąda. Jeśli na połączeniu ustawiono wiele certyfikatów klienta, najlepszym z nich będzie używany algorytm, który uwzględnia dopasowanie między listą wystawców certyfikatów dostarczonych przez serwer i nazwę wystawcy certyfikatu klienta.

Klasa SslStream zapewnia jeszcze większą kontrolę nad uzgadniania SSL. Klient może określić pełnomocnika, aby wybrać certyfikat klienta do użycia.

Serwer zdalny może sprawdzić, czy certyfikat klienta jest prawidłowy, bieżący i podpisany przez odpowiedni urząd certyfikacji. Delegata można dodać do elementu ServerCertificateValidationCallback , aby wymusić weryfikację certyfikatu.

Wybór certyfikatu klienta

Program .NET Framework wybiera certyfikat klienta, który ma być prezentowany serwerowi w następujący sposób:

  1. Jeśli certyfikat klienta został wcześniej przedstawiony na serwerze, certyfikat jest buforowany po raz pierwszy i jest ponownie używany do kolejnych żądań certyfikatów klienta.

  2. Jeśli delegat jest obecny, zawsze użyj wyniku delegata jako certyfikatu klienta do wybrania. Spróbuj użyć buforowanego certyfikatu, jeśli to możliwe, ale nie używaj buforowanych poświadczeń anonimowych, jeśli delegat zwrócił wartość null, a kolekcja certyfikatów nie jest pusta.

  3. Jeśli jest to pierwsze wyzwanie dla certyfikatu klienta, struktura wylicza certyfikaty w X509Certificate lub X509Certificate2 obiekty klas skojarzone z połączeniem, szukając dopasowania między listą wystawców certyfikatów dostarczonych przez serwer i nazwę wystawcy certyfikatu klienta. Pierwszy zgodny certyfikat jest wysyłany do serwera. Jeśli żaden certyfikat nie jest zgodny lub kolekcja certyfikatów jest pusta, do serwera zostanie wysłane anonimowe poświadczenie.

Narzędzia konfiguracji certyfikatów

Dostępnych jest wiele narzędzi do konfiguracji certyfikatu klienta i serwera.

Narzędzie Winhttpcertcfg.exe może służyć do konfigurowania certyfikatów klienta. Narzędzie Winhttpcertcfg.exe jest udostępniane jako jedno z narzędzi z zestawem Resource Kit systemu Windows Server 2003. To narzędzie jest również dostępne do pobrania w ramach narzędzi Zestawu zasobów systemu Windows Server 2003 w www.microsoft.com.

Narzędzie HttpCfg.exe może służyć do konfigurowania HttpListener certyfikatów serwera dla klasy . Narzędzie HttpCfg.exe jest dostępne jako jedno z narzędzi pomocy technicznej dla systemów Windows Server 2003 i Windows XP z dodatkiem Service Pack 2. HttpCfg.exe i inne narzędzia pomocy technicznej nie są instalowane domyślnie w systemie Windows Server 2003 lub Windows XP. W systemie Windows Server 2003. Narzędzia pomocy technicznej są instalowane oddzielnie od następującego folderu i pliku na dysku CD-ROM systemu Windows Server 2003:

\Support\Tools\Suptools.msi

Do użytku z dodatkiem Service Pack 2 systemu Windows XP narzędzia obsługi systemu Windows XP są dostępne jako pobieranie z www.microsoft.com.

Kod źródłowy do wersji narzędzia HttpCfg.exe jest również udostępniany jako przykład z zestawem SDK systemu Windows Server. Kod źródłowy przykładu HttpCfg.exe jest instalowany domyślnie z przykładami sieciowymi w ramach zestawu Windows SDK w następującym folderze:

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

Oprócz tych narzędzi X509Certificate klasy i X509Certificate2 udostępniają metody ładowania certyfikatu z systemu plików.

Zobacz też