我想建立一个Java客户端和服务器我设立之间的SSL或TLS连接。
我一直在使用SSLContext.getInstance("SSL")
建立SSLContext
,和它的工作。
我想知道什么的目的, protocol
参数是SSLContext.getInstance(String protocol)
。
尤其是,使用什么样的变化之间SSLContext.getInstance("SSL")
和SSLContext.getInstance("TLS")
或其他可能的值?
这是一个相当详细的解答 ,我写了一段时间后描述SSL和TLS之间的区别。 总之,TLS是SSL的后继者,和TLS 1.0可以被认为是“SSL 3.1”。
如果你看JSSE参考指南,在的SSLContext部分 ,它说:
这些每一个静态方法返回一个实现至少所请求的安全套接字协议的实例。 返回的情况下可以实现其他协议了。 例如,的getInstance( “使用TLSv1”)可以返回其实现 “的TLSv1”, “TLSv1.1” 和 “TLSv1.2工作” 一个实例。
这也是中提到的标准名称的文件。
特别是,如果你检查了Oracle / OpenJDK 7的源代码SSLContextImpl ,你会发现,所有SSLContext
的支持(使用的SSLv2的客户您好TLS 1.2从SSLv3)和所有协议。 所不同的是哪些协议默认情况下启用。 此外,你不应该在一般依靠这一点,因为其他的Java实现(例如IBM JRE)可能会表现不同。
如果你想使用协议的一组特定的连接,你应该使用SSLSocket
或SSLEngine
的setEnabledProtocols
方法。 否则,它会使用默认值,如中所述提供商文档 。
协议用于服务器和客户端之间的通信。 这样SSLContext(String protocol)
返回协议的实例,然后使用该服务器或客户端与对方进行安全级别通信。
欲了解更多参考参考此链接。 http://www.herongyang.com/JDK/SSL-java-net-ssl-SSLContext-Class-Test.html