java - Ubuntu 下的 OpenJDK 11 支持 TLSv1.3 吗?

标签 java ubuntu ssl transport-security

在 Ubuntu 18.04 上

sudo apt install openjdk-11-source

导致 ProtocolVersion.java 不了解 TLSv1.3 。 有什么方法可以纠正这个问题(无需限制性许可)?

最佳答案

更新

April 23rd 2019 ,Ubuntu(18.04 LTS 及更新版本)附带 JRE/JDK 版本 11.0.3 。因此,alamar 的原始答案已过时。

出于好奇,我编写了一个小型 TLS v1.3 检查工具,它以编程方式检查目标运行时环境的 TLS v1.3 支持。这样,人们就可以快速发现正在发生的事情:

public class TLS13Checker {

    public static void main(String[] args) {
        SSLContext context = null;
        try {
            KeyStore keyStore = KeyStore.getInstance("pkcs12");
            TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("PKIX");
            trustManagerFactory.init(keyStore);
            TrustManager[] trustAllCerts = trustManagerFactory.getTrustManagers();
            context = SSLContext.getInstance("TLSv1.3");
            context.init(null, trustAllCerts, new SecureRandom());

            SSLParameters params = context.getSupportedSSLParameters();
            String[] protocols = params.getProtocols();
            System.out.println("Java version : " + System.getProperty("java.runtime.version"));
            boolean supportsTLSv13 = false;
            for (String protocol : protocols) {
                if ("TLSv1.3".equals(protocol)) {
                    supportsTLSv13 = true;
                    break;
                }
            }
            if(supportsTLSv13) {
                System.out.println("JRE supports TLS v1.3!");
            } else {
                System.out.println("JRE does NOT support TLS v1.3!");
            }
            String[] suites = params.getCipherSuites();
            System.out.println("A total of " + suites.length + " TLS cipher suites is supported.");

        } catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException e) {
            e.printStackTrace();
            System.exit(42);
        }

    }
}

您可以简单地编译并运行它,输出将类似于我在最近的 OpenJDK 环境(在 MacOS 下)中得到的结果:

Java version : 11.0.3+7
JRE supports TLS v1.3!
A total of 45 TLS cipher suites is supported.

此外,此列表还概述了所有常规 JSSE Cipher Suite Names 。它可能有助于引用或其他(实现)目的。

希望有帮助。

关于java - Ubuntu 下的 OpenJDK 11 支持 TLSv1.3 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54558945/

相关文章:

java - Java 中的文件、URI 和 URL 冲突

php - 无法使用 Apache 在 Laravel 中找到路线

php - 从 PHP 脚本将用户添加到 Ubuntu 服务器

Docker 流量控制 (tc) - 未找到指定的 qdisc

ruby-on-rails - JRuby on Rails 部署

java - 在java中处理特定于环境的配置的最佳方法是什么?

java - 从 Jtable 中删除行时出错

java - 来自 superClass 的 JPA OneToMany 关联

redirect - 在 Azure VM 上安装通配符 SSL 证书

c - 将 SSL 集成到使用 BSD 套接字的程序中