SSLContext.getInstance("TLS")是否也支持TLS v1.1和TLS v1.2?

20

在我的Java代码中,我正在使用命令创建一个SSL上下文实例

SSLContext ctx = SSLContext.getInstance("TLS");

但是,在我的Tomcat服务器中,我设置了TLSv1.2,但是遇到了握手错误。

我们如何使用此方法支持所有TLS协议,就像在cpp中我们有SSLV23客户端方法可以支持所有协议一样。


3
你使用的Java版本是哪个? - Uwe Plonus
6
SSLContext ctx = SSLContext.getInstance("TLSv1.2"); 支持所有协议 :) (注意:这里的“支持所有协议”可能是一种幽默或玩笑式的说法,因为实际上 TLSv1.2 只支持特定的协议版本。但是,按照您的要求,我将不会提供任何解释或更改原意的内容。) - mahan07
5
SSLContext ctx = SSLContext.getInstance("TLS"); - 在Java 8及以下版本中,它还包含SSLv3。已向Oracle提交了错误报告,但被关闭且标记为“不予修复”,因为这是其设计缺陷。另请参阅Which Cipher Suites to enable for SSL Socket? - jww
你有Bug ID吗? - Kay
@mahan07 SSLContext.getInstance("TLSv1.2") 并不一定支持所有协议 - 这取决于 JVM。在我的情况下,使用这种配置的类无法连接到运行在 IBM JVM 1.7.0 上的使用 TLSv1 的 Apache 服务器,但是可以连接到运行在 Oracle JVM 1.7.0 上的同样服务器。 - polarfish
1个回答

25

要使用TLSv1.2,请尝试使用以下代码:

SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(null, null, null);

请问如何将这个 sslContext 应用到我的 RestTemplate 中呢?我正在使用 Spring 3.0.x 版本,一直尝试但是无法实现。 - Panadol Chong
https://dev59.com/iq_la4cB1Zd3GeqPoSNG#55333280 - Camil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接