Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Установление безопасного соединения с использованием SSL

Технология Secure Sockets Layer (SSL) — это безопасность, которая реализована на транспортном уровне (для получения дополнительной информации о безопасности транспортного уровня см. Безопасность транспортного уровня). SSL позволяет веб-браузерам и веб-серверам общаться через безопасное соединение. В этом безопасном соединении данные шифруются перед отправкой, а затем дешифруются при получении перед обработкой. И браузер, и сервер шифруют весь трафик перед отправкой каких-либо данных.

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

  • Аутентификация: при первоначальной попытке установить связь с веб-сервером по безопасному соединению этот сервер предоставит веб-браузеру набор учётных данных в виде сертификата сервера (также называемого сертификатом открытого ключа). Целью сертификата является подтверждение того, что сайт является тем, за который он себя выдаёт. В некоторых случаях сервер может запросить сертификат, подтверждающий, что клиент является тем, за кого он себя выдаёт. Этот механизм известен как аутентификация клиента по цифровому сертификату.

  • Конфиденциальность: при передаче данных между клиентом и сервером по сети третьи лица имеют возможность просматривать и перехватывать эти данные. Ответы SSL зашифрованы, так что данные не могут быть расшифрованы третьей стороной, и данные остаются конфиденциальными.

  • Целостность: при передаче данных между клиентом и сервером по сети третьи лица могут просматривать и перехватывать эти данные. SSL гарантирует, что данные не будут изменены этой третьей стороной при передаче.

Протокол SSL разработан так, чтобы быть максимально эффективным и безопасным. Однако шифрование и дешифрование — вычислительно дорогостоящие процессы. Не является строго обязательным запускать всё веб-приложение через SSL, и разработчик обычно решает, какие страницы требуют безопасного соединения, а какие — нет. Страницы, для которых может потребоваться безопасное соединение, включают страницы для входа в систему, персональные данные, проверки корзины покупок или передачу информации о кредитной карте. Любая страница приложения может быть запрошена через защищённый сокет простым добавлением в префикс URL https: вместо http:. Любые страницы, для которых абсолютно необходимо безопасное соединение, должны проверить тип протокола, связанный с запросом страницы, и предпринять соответствующие действия, если https: не указан.

Использование виртуальных хостов на основе доменных имён с защищённым соединением может быть проблематичным. Это ограничение дизайна самого протокола SSL. Установление соединения SSL, при котором клиентский браузер принимает сертификат сервера, должно произойти до обращения к HTTP-запросу. В результате информация запроса, содержащая имя виртуального хоста, не может быть определена до аутентификации, и поэтому невозможно назначить несколько сертификатов одному IP-адресу. Если все виртуальные хосты на одном IP-адресе должны проходить аутентификацию с одним и тем же сертификатом, добавление нескольких виртуальных хостов не должно мешать нормальной работе SSL на сервере. Имейте в виду, однако, что большинство клиентских браузеров сравнивают доменное имя сервера с доменным именем, указанным в сертификате, если таковые имеются. Это применимо прежде всего к официальным сертификатам, подписанным центром сертификации (CA). Если доменные имена не совпадают, эти браузеры будут отображать предупреждение для клиента. Как правило, только виртуальные хосты на основе IP-адресов обычно используются с SSL в производственной среде.

Верификация и настройка поддержки SSL

Как правило, вы должны решить следующие проблемы, чтобы включить SSL для сервера.

  • В дескрипторе развёртывания сервера должен быть элемент Connector для SSL.

  • Должно быть указано корректное хранилище ключей и файлов сертификатов.

  • Расположение файла хранилища ключей и его пароль должны быть указаны в дескрипторе развёртывания сервера.

Коннектор SSL HTTPS уже встроен в GlassFish Server.

Для тестирования и проверки корректности настройки SSL загрузите страницу входа по умолчанию с URL, который подключается к порту, определённому в дескрипторе развёртывания сервера:

https://localhost:8181/

https в этом URL указывает, что браузер должен использовать протокол SSL. localhost предполагает, что пример запускается на локальном компьютере. 8181 — это безопасный порт, который был указан там, где был создан коннектор SSL. Если используется другой сервер или порт, нужно изменить это значение соответствующим образом.

При первой загрузке этого приложения открывается диалоговое окно «Новый сертификат сайта или предупреждение системы безопасности». Нажмите «Далее», чтобы перейти через ряд диалоговых окон, и нажмите «Готово», когда вы дойдёте до последнего диалогового окна. Сертификаты появятся только в первый раз. Когда вы принимаете сертификаты, последующие посещения этого сайта предполагают, что вы всё ещё доверяете контенту.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)