【问题标题】:TLS version used in JDK 8JDK 8 中使用的 TLS 版本
【发布时间】:2020-06-02 14:02:29
【问题描述】:

我们使用以下代码初始化 SSL 上下文并在 Java 8 上运行。

SSLContext context = SSLContext.getInstance("SSL");

既然 Java 8 默认使用 TLSv1.2?这是否意味着如果我的服务器支持,上面的代码将开始发送 TLSv1.2 请求。

想了解“SSL”协议名称是否只是一个别名,但 java 运行时开始使用默认 TLS 版本发送请求。

更新

我针对“https://www.google.co.in/”运行了我的代码,并在 fiddler 中找到了这个

A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below.

Version: 3.3 (TLS/1.2

如果我将协议更改为仅支持 1.0 的 TLSv1。然后 Fiddler 告诉我

A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below.

Version: 3.1 (TLS/1.0)

所以,我猜上面带有“SSL”协议名称的代码应该可以很好地与 TLS 1.2 服务器配合使用。

【问题讨论】:

    标签: java tls1.2


    【解决方案1】:

    是的。在 Java 7 中,服务器端默认的 TLS 版本是 1.2。在 Java 8 中,服务器和客户端都有默认的 TLS 版本 1.2。

    由于 TLS 版本在双方都向后兼容,除非服务器被严格配置为特定版本,这应该不是问题。

    【讨论】:

    • 感谢您的回复。 ..我的问题也是是否将协议名称提及为“SSL”,而根据我的代码进行 SSLContext 初始化是否会指向 TLSv1.2?
    • 如果你想使用默认值,那么调用应该使用 getDefault 而不是 getInstance。
    • 是的,明白这一点……但想检查协议名称是否只是一个别名,但 java 运行时选择协议的默认 TLS 版本……如果不清楚,我已经更新了我的问题。
    • 需要通过设置不同的值和使用 tcpdump 跟踪数据包进行一些实验。 API文档docs.oracle.com/javase/8/docs/technotes/guides/security/…不是很清楚。
    • 我运行了我的代码并通过 fiddler 捕获了请求……至少 fiddler 说它正在发送 TLS 1.2 请求……更新了上面的帖子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2019-04-07
    • 2020-09-16
    相关资源
    最近更新 更多