【发布时间】:2012-10-30 08:31:15
【问题描述】:
我正在尝试在我正在设置的 Java 客户端和服务器之间建立 SSL 或 TLS 连接。
我一直在使用SSLContext.getInstance("SSL") 来构建SSLContext,并且成功了。
我想知道protocol参数在SSLContext.getInstance(String protocol)中的作用。
特别是,使用SSLContext.getInstance("SSL") 和SSLContext.getInstance("TLS") 或其他可能的值之间有何变化?
【问题讨论】:
-
你试过阅读documentation吗?
-
投反对票或投票删除的,请参与here。
-
注意布鲁诺的评论:“如果你想使用一组特定的协议......
setEnabledProtocols”。如果您说getInstance("TLS"),那么您将获得 SSLv3 和 TLSv1。 TLSv1.1 和 TLSv1.2 在大多数 Java 实现下都不会启用(我说最多是因为 Java 8 改变了一些行为)。您必须明确删除 SSLv3,并且必须明确启用 TLSv1.0、TLSv1.1 和 TLSv1.2。请注意,此处的可用和已启用是有区别的。 -
澄清一下:在 Java 7 和 Java 8 中,对于 SunJSSE 提供程序(开箱即用的提供程序),就 SSLContext 而言,“SSL”是“TLS”的别名。 getInstance(protocol) 是相关的。