Опубликован: 04.05.2010 | Доступ: свободный | Студентов: 4032 / 454 | Оценка: 4.64 / 4.44 | Длительность: 41:24:00
Лекция 13:

Безопасность в Веб-разработке

17.5.2. HTTPS

HTTPS (Hypertext Transfer Protocol Secure) – расширение протокола HTTP, поддерживающее шифрование [37]. Данные, передаваемые по протоколу HTTP, "упаковываются" в криптографический протокол SSL или TLS, тем самым обеспечивается защита этих данных.

HTTPS был разработан компанией Netscape Communications Corporation, чтобы обеспечить аутентификацию и защищенное соединение. HTTPS широко используется в мире Веб для приложений, в которых важна безопасность соединения, например, в платежных системах.

В настоящее время HTTPS поддерживается наиболее популярными браузерами и используется в почтовом сервисе GMail.

Строго говоря, HTTPS не является отдельным протоколом. По сути это обычный HTTP, работающий через шифрованные транспортные механизмы SSL и TLS. Он обеспечивает приемлемую защиту от атак, основанных на прослушивании сетевого соединения – от снифферских атак и атак типа man-in-the-middle при условии, что будут использоваться адекватные шифрующие средства, сертификат сервера проверен и ему доверяют.

По умолчанию HTTPS URL использует 443 TCP-порт (для незащищенного HTTP – 80). Чтобы подготовить веб-сервер для обработки https-соединений, администратор должен получить и установить в систему сертификат для этого веб-сервера. Сертификат состоит из двух частей (двух ключей) – public и private. Public-часть сертификата используется для зашифровывания трафика от клиента к серверу в защищенном соединении, private-часть – для расшифровывания полученного от клиента зашифрованного трафика на сервере. Сертификат можно получить в компании-сертификаторе (например, VeriSign) – это платная услуга. Сертификат должен быть подписан уполномоченной стороной (компанией-сертификатором – Certificate authority), которая будет гарантировать клиентам, что держатель сертификата является тем, за кого себя выдает.

Некоторые сайты используют собственные сертификаты. Существует возможность создать такой сертификат, не обращаясь в компанию-сертификатор. Такие сертификаты могут быть созданы для серверов, работающих под Unix, с помощью таких утилит, как ssl-ca от OpenSSL или gensslcert от SuSE. Подписываются такие сертификаты этим же сертификатом и называются self-signed. Такие сертификаты менее надежны, чем сертификаты, подписанные компаниями-сертификаторами. Такое использование защищает от пассивного прослушивания, но без проверки сертификата каким-то другим способом (например, звонок владельцу и проверка контрольной суммы сертификата) этот метод не будет являться вполне безопасным.

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

В HTTPS для шифрования используется длина ключа 40, 56, или 128 бит. Некоторые старые версии браузеров используют длину ключа 40 бит (пример тому – IE, версий до 4.0), что связано с экспортными ограничениями в США. Длина ключа 40 бит не является сколько-нибудь надежной. Многие современные сайты требуют использования новых версий браузеров, поддерживающих шифрование с длиной ключа 128 бит, с целью обеспечить достаточный уровень безопасности. Такое шифрование значительно затрудняет злоумышленнику поиск паролей и другой личной информации.

17.5.3. Настройка HTTPS

Для того чтобы веб-запросы/ответы передавались по безопасному протоколу передачи данных HTTPS в ОС Windows необходимо настроить работу сайта через SSL ( HTTPS ) в IIS.

17.5.3.1. Пример настройки для IIS 6
  1. Установить бюро сертификатов (БС). Про БС можно почитать по ссылке http://www.intuit.ru/department/internet/websadmin/10/.
  2. Зайти в свойства сайта (рис. 17.18).
    IIS. Свойства сайта

    Рис. 17.18. IIS. Свойства сайта
  3. В свойствах сайта перейти во вкладку DirectorySecurity и нажать кнопу ServerSertificate (рис. 17.19).
    IIS. DirectorySecurity

    Рис. 17.19. IIS. DirectorySecurity
  4. В появившемся окне нажать "Далее".
  5. Потом выбрать пункт "Создать новый сертификат".
  6. В следующем окне оставить все как есть (Prepare the request now, but send it later).
  7. В последующих окнах можно ввести дополнительную информацию. В одном из окон нужно будет ввести имя для файла, содержащего запрос на сертификат.
  8. Нужно зайти на " http://имя_сервера/certsrv " для создания сертификата из запроса.
  9. Перейти по ссылке Request a certificate.
  10. Потом перейти по ссылке Advanced certificate request.
  11. И, наконец, Submit a certificate request by using a base-64-encoded CMC or PKCS #10 file, or submit a renewal request by using a base-64-encoded PKCS #7 file.
  12. В появившейся форме в поле Saved Request вставить содержание текстового файла с запросом на сертификат, сохраненный ранее (рис. 17.20). Нажать Submit.
    Microsoft Certificate Services

    увеличить изображение
    Рис. 17.20. Microsoft Certificate Services
  13. Будет выведен отчет о том, что сертификат передан на рассмотрение. Также отобразится идентификатор сертификата. Его надо запомнить.
  14. Далее нужно зайти в панель управления сертификатами и разрешить созданный сертификат (панель управления / администрирование / управление сертификатами) (рис. 17.21).
    Certification Authority

    увеличить изображение
    Рис. 17.21. Certification Authority

    Зайти в раздел ожидающих для рассмотрения сертификатов. Выбрать нужный сертификат и разрешить его.

  15. Опять идем на " http://имя_сервера/certsrv ", переходим по ссылке View the status of a pending certificate request. Выбираем сертификат и жмем Download certificate.Сохраняем сертификат.
  16. Потом опять идем в свойства сайта во вкладку безопасность каталога. Выбираем сертификаты сервера (рис. 17.22).
    IIS Sertificate Wizard

    Рис. 17.22. IIS Sertificate Wizard
  17. Заполняем все поля (рис. 17.23).
    IIS Sertificate Wizard

    Рис. 17.23. IIS Sertificate Wizard

    В данном поле пишем путь к файлу сертификата.

  18. Сайт теперь доступен по https.
Замечание: Если сайт работает не на стандартном TCP порту, а например, на 90. То по протоколу https он (т.е. 90-ый TCP порт) не указывается. По https указываются ssl порты (стандартный: 443).

Пример:

  1. Сайт работает на 90-ом TCP порту и на 443 SSL. Тогда нужно обращаться к сайту по ссылке "https://имя_сервера/".
  2. Сайт работает на 90-ом TCP порту и на 86787 SSL. Тогда нужно обращаться к сайту по ссылке "https://имя_сервера:86787/".