Данный пример запрашивает файл по протоколу 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
Открыть Диспетчер служб IIS ( IIS Manager) и щелкнуть правой кнопкой мыши на папке сайты (Sites)
Кликнуть Добавить FTP-сайт (Add FTP Site).
Ввести Имя FTP-сайта (FTP site name) Физический путь (Physical path)
Выбрать привязку (можно оставить по умолчанию) и установить параметры Ssl требовать (Require Ssl) и выбрать Сертификат Ssl (SSL Certificate) из предварительно сгенерированных.
Снять Проверку подлинности (Authentication ) Анонимный (Annonimous) и Basic (базовый); установить Все пользователи (All users) доступ чтение (read) запись (write).
Завершить работу мастера.
Добавить вручную в конфигурацию 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>