Услуги Сертификаты Новости Статьи База знаний Алгоритмы Портфолио Скачать Ссылки Поиск
Услуги arrow Статьи arrow .NET и сертификаты SSL. Часть 1
.NET и сертификаты SSL. Часть 1 Версия для печати Отправить на e-mail
31.10.2008

SSL: использование сертификатов открытого и закрытого ключа применимо к web-службам ASP.NET

Часть 1. Создание сертификатов X509, установка сертификатов, настройка IIS, установка прав доступа

В данной статье я хочу рассказать о существующих особенностях использования протокола SSL при обмене данными между клиентом и сервером в среде .NET.

Создание сертификатов

Сертификаты можно создавать несколькими способами. Ниже рассматриваются некоторые из них.

  • с помощью центра выдачи сертификатов Windows;

  • с помощью сторонних центров сертификации;

  • с помощью утилит.

Центр выдачи сертификатов Windows Server

Это, на мой взгляд, самый верный способ создания сертификатов для проектов, реализуемых на стороне сервера клиента.

Центр выдачи сертификатов входит в состав поставки серверной операционной системы Windows 2003 и более поздней, нужно лишь настроить его и можно использовать. Рассмотрение работы центра выдачи сертификатов выходит за рамки данной статьи. Я хочу рассказать, как можно не имея возможности использовать данный центр, создать тестовые сертификаты.

Сторонние центры сертификации

Надежно и удобно, если бюджет позволяет. В сети Internet есть представительства нескольких крупных центров выдачи сертификатов. Но их услуги стоят денег, поэтому, если Вам нужна надежность сертификата, а центра выдачи сертификатов Windows Server под рукой не оказалось - то лучше выбрать этот путь.

Утилиты

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

В сети можно найти разные утилиты, которые позволяют создавать сертификаты. Однако, не стоит забывать, что начиная с недавнего времени в состав IIS 6.0 Resource Kit Tools (IIS 6.0) (http://go.microsoft.com/fwlink/?LinkId=34407) входит утилита makecert.exe. Эта утилита позволяет создавать корневые сертификаты и сертификаты клиентов, запускается из командной строки и имеет гибкие настройки с помощью параметров. В MSDN есть пример использования утилиты makecert для создания сертификатов, как и описание параметров ее вызова.

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

Порядок создания сертификатов
  1. Создать корневой сертификат, содержащий закрытый ключ. Он понадобится для дальнейшего создания сертификата серверу IIS и клиентам.
  2. Создать сертификат открытого ключа для IIS, подписанный корневым сертификатом.
  3. Создать сертификаты открытого ключа каждому пользователю, подписанные корневым сертификатом.

Внимание! Сертификат сервера IIS должен иметь имя подписи (CN) и имя самого сертификата идентичные тому имени (IP адресу), по которому планируется выполнять к нему клиентские подключения. В противном случае, запрос по протоколу SSL к серверу не пройдет. Например, если наш сервер будет вызван по адресу https://192.168.0.1, то сертификат сервера IIS должен иметь CN=192.168.0.1 и называться 192.168.0.1.cer. Данное условие очень важно для правильной идентификации сервера механизмом проверки подлинности протокола SSL.

Установка сертификатов

Когда все сертификаты созданы, подписаны и проверены, их нужно установить с помощью консоли управления (MMC).

Для ее запуска нужно нажать "Пуск", далее "Выполнить", далее введите mmc и нажмите Enter. В окне консоли нажмите меню "Консоль", далее выберите пункт "Добавить или удалить оснастку". В появившемся окне нужно нажать кнопку "Добавить" и выбрать из списка "Сертификаты". На форме "Оснастка диспетчера сертификатов" нужно выбрать меню управления "Для учетной записи компьютера". И нажать "Далее". На форме выбора компьютера управления выбрать "локальным компьютером". Далее, нажать "Готово". Подобные действия нужно повторить для добавления оснастки просмотра сертификатов текущего пользователя.

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

Далее, в личные сертификаты компьютера устанавливается сертификат сервера. Дополнительно, нужно этот же сертификат установить в доверенные корневые центры сертификации.

На стороне клиентов обязательно устанавливается в доверенные корневые центры сертификации наш корневой сертификат (по нему будет проверяться подпись сертификата на клиенте) и в личные сертификаты компьютера клиента нужно установить сертификат, созданный для данного клиентского подключения.

Подключение сертификата сервера к IIS

В безопасном обмене данными по протоколу SSL участвует две стороны: сервер и клиент. Для проверки достоверности сервера на стороне клиента служит сертификат сервера. В IIS нужно выполнить настройку web-узла, чтобы установить сертификат сервера и указать дополнительные параметры безопасности.

Настройка web-узла по умолчанию 

Нужно зайти в свойства web-узла по умолчанию, на вкладку "Безопасность каталога". В разделе "Безопасные подключения" нужно нажать "Сертификат". Будет запущен мастер установки сертификата и предложено установить новый сертификат. Здесь нужно будет указать путь к сертификату, созданному для сервера. После успешной установки можно будет нажать кнопку "Просмотр", чтобы просмотреть установленный сертификат.

Далее, нажмите "Изменить", появится окно "Безопасные подключения". Здесь нужно указать "Принимать сертификаты клиентов".

В разделе "Управление доступом и проверка подлинности" нужно обязательно включить анонимный доступ и включить "Встроенная проверка подлинности Windows".

В конфигурации ASP.NET нужно проверить, что в секции Authorization правильно настроены права на доступ к web-узлу. По умолчанию, достаточным является параметр "Allow *". Также, нужно проверить версию .Net Framework, и выбрать такую, которая была использована для разработки серверной части приложения.

На закладке "Домашний каталог" нужно разрешить запуск сценариев.

Если для протокола SSL должен быть использован порт, отличный от 443, на закладке "Веб-узел" можно его задать в поле "Порт SSL".

Настройка виртуального каталога

Дополнительные настройки серверной части приложения выполняются с помощью настроек виртуального каталога.

Нужно разрешить запуск сценариев и исполняемых модулей. Все остальные настройки будут импортированы из настроек web-узла.

Настройка прав доступа к папкам виртуального каталога

Немаловажным моментом является правильная настройка прав доступа для учетных записей ASPNET и NETWORK SERVICE для доступа к тем папкам, где лежат файлы и библиотеки серверной части проекта. Так же, нужно установить права доступа к тем папкам, к которым будут обращаться служба в процессе своей работы.

Важно! Если служба будет обращаться к веткам реестра, на них нужно разрешить доступ учетной записи ASPNET.

Продолжение следует...

Последнее обновление ( 05.12.2008 )
 
< Пред.