Как включить SSL 3 в Java
Поскольку Java 8 Update 31 протокол SSL 3 по умолчанию отключен из-за недостатков безопасности в SSL-протоколе (см. Атаку POODLE ).
Даже если это не рекомендуется, как его можно включить?
- Заставить браузер загружать «https» версию веб-сайта, а не «http»?
- Подписанный SSL-сертификат третьей стороны для localhost или 127.0.0.1?
- ASP.NET MVC RequireHttps только в производстве
- Как запустить мое приложение в качестве суперпользователя из Eclipse?
- Как вы подписываете запрос на подпись сертификата в своем сертификационном центре?
- Самоподписанный сертификат SSL или CA?
- Как реализовать идентификацию имени сервера (SNI)
- Сколько информации может видеть мой интернет-провайдер?
- Использование самозаверяющего сертификата с .NET HttpWebRequest / Response
- HTTPS GET (SSL) с Android и самозаверяющим сертификатом сервера
- как добавить терминологическое имя объекта в ssl certs?
- Что такое Keystore?
- С HTTPS, являются ли URL и заголовки запросов защищенными как тело запроса?
Если у вас нет другого выбора, кроме использования SSL 3, приведенная ниже ссылка объясняет конфигурацию.
Примечания к выпуску для обновления 31 предоставляют информацию для включения SSL 3 снова в Java.
Как указано:
Если SSLv3 абсолютно необходим , протокол можно активировать, удалив «SSLv3» из свойства jdk.tls.disabledAlgorithms в файле java.security или динамически устанавливая это свойство безопасности «true» до инициализации JSSE.
Имейте в виду, что даже протокол TLS может быть использован для обеспечения небезопасного доступа с SSL 3, который также является частью недостатка POODLE. Включение этого для Java или любой другой технологии должно быть в крайнем случае только по критическим причинам.
Если вы должны повторно активировать SSLv3.0 на 8u31, 7u75, 6u91, все, что вам нужно сделать, это прокомментировать следующую строку в JRE_HOME / lib / security / java.security :
jdk.tls.disabledAlgorithms=SSLv3
Код:
import javax.net.ssl.*; public class SocketProtocols { public static void main(String[] args) throws Exception { SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); SSLSocket soc = (SSLSocket) factory.createSocket(); // Returns the names of the protocol versions which are // currently enabled for use on this connection. String[] protocols = soc.getEnabledProtocols(); System.out.println("Enabled protocols:"); for (String s : protocols) { System.out.println(s); } } }
Вывод:
Перед включением SSL 3.0
$ /jdk1.8.0_31/bin/java SocketProtocols Enabled protocols: TLSv1 TLSv1.1 TLSv1.2
После включения SSL 3.0
$ /jdk1.8.0_31/bin/java SocketProtocols Enabled protocols: SSLv3 TLSv1 TLSv1.1 TLSv1.2
кредиты / источник: http://javablogx.blogspot.de/2015/02/enabling-ssl-v30-in-java-8.html
Вы можете установить jdk.tls.disabledAlgorithms
безопасности jdk.tls.disabledAlgorithms
во время выполнения.
static { Security.setProperty("jdk.tls.disabledAlgorithms", ""); }
Я обнаружил, что оба эти изменения необходимы для подключения к плате DRAC 5:
Удалите MD5:
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
Удалите SSLv3, RC4 и MD5withRSA:
jdk.tls.disabledAlgorithms=DH keySize < 768