Данный пример запрашивает файл по протоколу ftps с двухсторонней аудентификацией, выводит на экран параметры серверного сертификата.

Демонстрирует

Данный пример демонстрирует использование методов класса FtpWebRequest, HttpWebResponse, ServicePoint.

Исходные тексты

Исходные тексты примера запакованы в файле Simple.zip. C# версия находится в файле Ssl\cs\FtpsRequest2.cs, Visual Basic версия находится в файле Ssl\vb\FtpsRequest2.vb. Подробнее см. Сборка, запуск и местоположение простейших криптографических примеров.

Как собрать пример

Сборка не требует дополнительных параметров и библиотек. Побробнее см. Сборка, запуск и местоположение простейших криптографических примеров.

Как запустить пример

Перед запуском примера для корректной проверки сертификата сервера необходимо иметь промежуточные и корневые сертификаты установленные в соответствующие хранилища. Кроме того, необходимо иметь доменный сертификат установленный в хранилищи MY со ссылкой на секретный ключ.

Для запуска примера необходимо передать url адрес запрашиваемой страницы (например, ftp://localhost/a.txt) и имя (DN) доменного сертификата (например, "Иванов Иван Иванович"). Сборка, запуск и местоположение простейших криптографических примеров.

Ftp сервер должен поддерживать протокол FTPS (например, FTP сервер из состава Windows 2008 R2) и быть сконфигурирован на доступ по доменному сертификату. Примерная последовательность действий для конфигурирования сервера Windows 2008 R2 приведена ниже.

Конфигурирование FTP сервера из состава Windows 2008 R2

  1. Открыть Диспетчер служб IIS ( IIS Manager) и щелкнуть правой кнопкой мыши на папке сайты (Sites)

  2. Кликнуть Добавить FTP-сайт (Add FTP Site).

  3. Ввести Имя FTP-сайта (FTP site name) Физический путь (Physical path)

  4. Выбрать привязку (можно оставить по умолчанию) и установить параметры Ssl требовать (Require Ssl) и выбрать Сертификат Ssl (SSL Certificate) из предварительно сгенерированных.

  5. Снять Проверку подлинности (Authentication ) Анонимный (Annonimous) и Basic (базовый); установить Все пользователи (All users) доступ чтение (read) запись (write).

  6. Завершить работу мастера.

  7. Добавить вручную в конфигурацию ApplicationHost.config (C:\Windows\System32\InetSrv\Config\ApplicationHost.config) строки: <sslClientCertificates clientCertificatePolicy="CertRequire" useActiveDirectoryMapping="true" /> и <clientCertAuthentication enabled="true" />

    В результате секция security будет иметь примерно следующий вид <security> <ssl serverCertHash="6FFE0294253A819CA4D9922A6818A48D944456CE" ssl128="true" controlChannelPolicy="SslRequire" dataChannelPolicy="SslRequire" /> <sslClientCertificates clientCertificatePolicy="CertRequire" useActiveDirectoryMapping="true" /> <authentication> <anonymousAuthentication enabled="false" /> <basicAuthentication enabled="false" /> <clientCertAuthentication enabled="true" /> </authentication> </security>

См. также