Подтвердить что ты не робот

Разница между SSL и TLS и их использование в Java

Я пытаюсь установить соединение SSL или TLS между клиентом Java и сервером, который я настраиваю.

Я использовал SSLContext.getInstance("SSL") для сборки SSLContext, и он работал.

Я хотел бы знать, что цель параметра protocol находится в SSLContext.getInstance(String protocol).

В частности, что изменяется между использованием SSLContext.getInstance("SSL") и SSLContext.getInstance("TLS") или другими возможными значениями?

4b9b3361

Ответ 1

Вот довольно подробный ответ, который я написал некоторое время назад, описывая разницу между SSL и TLS. Короче говоря, TLS является преемником SSL, а TLS 1.0 можно рассматривать как "SSL 3.1".

Если вы посмотрите на Справочное руководство JSSE в разделе SSLContext, в нем говорится:

Эти статические методы возвращают экземпляр, который реализует по крайней мере запрошенный протокол защищенного сокета. Возвращенный экземпляр может также реализуйте другие протоколы. Например, getInstance ( "TLSv1" ) может верните экземпляр, который реализует "TLSv1", "TLSv1.1" и "TLSv1.2".

Это также упоминается в документе Стандартные имена.

В частности, если вы проверите исходный код Oracle/OpenJDK 7 для SSLContextImpl, вы обнаружите, что все его SSLContext поддержка всех протоколов (из SSLv3 с использованием клиента SSLv2 Hello to TLS 1.2). Что отличает, какие протоколы включены по умолчанию. Кроме того, вы не должны полагаться на это в целом, поскольку другие реализации Java (например, IBM JRE) могут вести себя по-разному.

Если вы хотите, чтобы для соединения использовался определенный набор протоколов, вы должны использовать метод SSLSocket или SSLEngine setEnabledProtocols. В противном случае он будет использовать значения по умолчанию, как описано в Документация поставщиков.

Ответ 2

Протокол используется для связи между сервером и клиентом. Таким образом, SSLContext(String protocol) возвращает экземпляр протокола, а затем использует этот сервер или клиент для связи друг с другом для уровня безопасности.

Для получения дополнительной информации обратитесь к этой ссылке. http://www.herongyang.com/JDK/SSL-java-net-ssl-SSLContext-Class-Test.html