Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Классы System.Net поддерживают несколько способов выбора и проверки System.Security.Cryptography.X509Certificates подключений по протоколу SSL. Клиент может выбрать один или несколько сертификатов для проверки подлинности на сервере. Серверу может потребоваться, чтобы сертификат клиента был одним или несколькими конкретными атрибутами для проверки подлинности.
Определение
Сертификат — это поток байтов ASCII, содержащий открытый ключ, атрибуты (например, номер версии, серийный номер и дата окончания срока действия) и цифровую подпись из центра сертификации. Сертификаты используются для установления зашифрованного подключения или проверки подлинности клиента на сервере.
Выбор и проверка сертификата клиента
Клиент может выбрать один или несколько сертификатов для определенного SSL-подключения. Сертификаты клиента могут быть связаны с SSL-подключением к веб-серверу или почтовому серверу SMTP. Клиент добавляет сертификаты в коллекцию X509Certificate объектов или X509Certificate2 объектов класса. В качестве примера используется электронная почта, коллекция сертификатов является экземпляром X509CertificateCollection, связанным со свойством ClientCertificates класса SmtpClient. Класс HttpWebRequest имеет аналогичное ClientCertificates свойство.
Основное различие между X509Certificate и X509Certificate2 классами заключается в том, что закрытый ключ должен находиться в хранилище сертификатов для X509Certificate класса.
Даже если сертификаты добавляются в коллекцию и связаны с определенным SSL-подключением, сертификаты не будут отправляться на сервер, если сервер не запрашивает их. Если для подключения задано несколько сертификатов клиента, лучшее будет использоваться на основе алгоритма, который учитывает соответствие между списком издателей сертификатов, предоставленным сервером и именем издателя сертификата клиента.
Класс SslStream даёт ещё больше возможностей для контроля над рукопожатием SSL. Клиент может указать делегат, чтобы выбрать используемый сертификат клиента.
Удаленный сервер может проверить, является ли сертификат клиента допустимым, текущим и подписанным соответствующим центром сертификации. Делегата можно добавить в ServerCertificateValidationCallback для обеспечения проверки сертификата.
Выбор сертификата клиента
Платформа .NET Framework выбирает сертификат клиента, который будет представлен серверу следующим образом:
Если сертификат клиента был представлен ранее серверу, сертификат кэшируется при первом представлении и повторно используется для последующих запросов на сертификаты клиента.
Если делегат присутствует, всегда используйте результат от делегата в качестве сертификата клиента для выбора. Попробуйте использовать кэшированный сертификат, если это возможно, но не используйте кэшированные анонимные учетные данные, если делегат вернул значение NULL, а коллекция сертификатов не пуста.
Если это первая задача для сертификата клиента, платформа перечисляет сертификаты в X509Certificate объектах класса, X509Certificate2 связанных с подключением, ищет совпадение между списком издателей сертификатов, предоставленным сервером и именем издателя сертификата клиента. Первый сертификат, который соответствует условиям, отправляется на сервер. Если сертификат не совпадает или коллекция сертификатов пуста, анонимные учетные данные отправляются на сервер.
Средства настройки сертификата
Для настройки сертификата клиента и сервера доступны ряд средств.
Средство Winhttpcertcfg.exe можно использовать для настройки сертификатов клиента. Средство Winhttpcertcfg.exe предоставляется в качестве одного из средств с набором ресурсов Windows Server 2003. Это средство также доступно как скачивание в составе средств набора ресурсов Windows Server 2003 в www.microsoft.com.
Средство HttpCfg.exe можно использовать для настройки сертификатов сервера для HttpListener класса. Средство HttpCfg.exe предоставляется в качестве одного из средств поддержки для Windows Server 2003 и Windows XP с пакетом обновления 2 (SP2). HttpCfg.exe и другие средства поддержки по умолчанию не устанавливаются в Windows Server 2003 или Windows XP. В Windows Server 2003. Средства поддержки устанавливаются отдельно от следующей папки и файла на компакт-диске Windows Server 2003:
\Support\Tools\Suptools.msi
Для использования с Пакетом обновления 2 для Windows XP средства поддержки Windows XP доступны для скачивания из www.microsoft.com.
Исходный код для версии средства HttpCfg.exe также предоставляется в качестве примера с пакетом SDK для Windows Server. Исходный код для примера HttpCfg.exe устанавливается по умолчанию с сетевыми примерами в составе пакета SDK для Windows в следующей папке:
C:\Program Files\Microsoft SDK\Windows\v1.0\Samples\NetDS\http\serviceconfig
Помимо этих средств, X509CertificateX509Certificate2 классы предоставляют методы загрузки сертификата из файловой системы.