【问题标题】:Difference between SSL and TLS and their usage in JavaSSL 和 TLS 之间的区别及其在 Java 中的用法
【发布时间】: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) 是相关的。

标签: java ssl


【解决方案1】:

这是我不久前写的rather detailed answer,描述了 SSL 和 TLS 之间的区别。总之,TLS是SSL的继承者,TLS 1.0可以认为是“SSL 3.1”。

如果您查看JSSE Reference Guide, in the SSLContext section,它会说:

这些静态方法每个都返回一个实例,该实例至少实现 请求的安全套接字协议。返回的实例可能 也实现其他协议。例如,getInstance("TLSv1") 可能 返回一个实现“TLSv1”、“TLSv1.1”和“TLSv1.2”的实例。

Standard Names 文档中也提到了这一点。

特别是,如果您检查 SSLContextImpl 的 Oracle/OpenJDK 7 源代码,您会发现它的所有 SSLContexts 都支持所有协议(从使用 SSLv2 客户端 Hello 的 SSLv3 到 TLS 1.2)。不同的是默认启用哪些协议。此外,一般情况下,您不应依赖它,因为其他 Java 实现(例如 IBM JRE)的行为可能会有所不同。

如果您希望将一组特定的协议用于连接,您应该使用SSLSocketSSLEnginesetEnabledProtocols 方法。否则,它将使用默认值,如Providers documentation 中所述。

【讨论】:

    【解决方案2】:

    协议用于服务器和客户端之间的通信。所以SSLContext(String protocol) 返回协议的实例,然后使用该服务器或客户端相互通信以达到安全级别。

    有关更多参考,请参阅此链接。 http://www.herongyang.com/JDK/SSL-java-net-ssl-SSLContext-Class-Test.html

    【讨论】:

    • 我刚才说过,在服务器中,我创建了一个协议'tls'。 SSLCONtext(String protocol) 意味着获取客户端协议?我只是不明白为什么它在客户端中工作,我调用 SSLContext.getInstance("ssl")。 'ssl' 和 'tls' 是不同的协议类型。我的英语不好,很抱歉不清楚问题
    • 第一句话含糊不清。第二句不正确:getInstance() 不返回“协议实例”;它重新运行 SSLContext 的一个实例。最后一段引用了非规范且基本上不相关的参考。
    • @Angel 与其纠结于删除和取消删除,不如修复它?
    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多