Openjdk 11中的TLSv1.3吗?

时间:2019-02-06 17:05:52

标签: java ubuntu ssl

在Ubuntu 18.04上

sudo apt install openjdk-11-source

导致ProtocolVersion.java未知TLSv1.3。 有什么办法可以纠正这个问题(没有限制性许可)?

2 个答案:

答案 0 :(得分:2)

更新

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的概述。对于参考或其他(实现)目的可能会有所帮助。

希望有帮助。

答案 1 :(得分:0)

似乎出于某种原因,Ubuntu实际上将Java 10放在openjdk-11- *软件包下。