#java #ssl #ssl-certificate #websphere #sslhandshakeexception
#java #ssl #ssl-сертификат #websphere #исключение sslhandshakeexception
Вопрос:
Существует 2 сервера Websphere. Первый — это клиент, а второй — сервер (8.5.5.13).
Конечный пользователь отправляет SOAP-запрос клиенту. Клиент получает запрос, выполняет некоторую обработку, а затем отправляет запрос REST на сервер.
Когда Сервер получает запрос от клиента, он выдает приведенное ниже исключение.
ОШИБКА 22304 — [ebContainer: 2] c.i.w.s.c.impl.sslhandshakeerrorracker: SSLC0008E: не удается инициализировать SSL-соединение. Несанкционированный доступ был запрещен или срок действия настроек безопасности истек. Исключением является javax.net.ssl.SSLHandshakeException: запрошенный клиентом протокол TLSv1 не включен или не поддерживается
Мы провели тестирование после включения TLSv1.2, а затем TLSv1 на уровне нашего сервера. Мы экспортировали сертификат с сервера и также добавили его в хранилище доверия клиента. Но мы все еще не можем устранить ошибку.
Вопросы:
1. Нужно ли нам поддерживать на нашем сервере ту же версию TLS, которая присутствует в клиентском WebSphere?
2. Мы развернули наше приложение на java7. Связано ли это с версией Java, с которой мы сталкиваемся с проблемой?
3. Связано ли это только с сертификатом или с чем-то другим?
Когда мы отключаем глобальную безопасность на нашем сервере, запрос обрабатывается правильно.
Ответ №1:
Эта ошибка произошла из-за несоответствия версии TLS на сервере. Клиент отправлял запрос с использованием TLSv1, а на сервере включен TLSv1.2. Для подтверждения связи SSL первым делом является совместимость с TLS. Клиент и сервер должны иметь одинаковые версии TLS.
После этого, если вы используете одностороннее SSL-подтверждение, необходимо извлечь сертификат с серверного компьютера и установить его на клиентский компьютер. Таким образом произойдет подтверждение связи SSL.