如何在 Java 7 中启用 TLS 1.2

2022-08-31 16:56:25

我正在尝试在使用JBoss 6.4和Java 1.7的Web应用程序中启用TLS 1.2。我在我的应用程序环境中有,但它似乎不适合我。-Dhttp.protocols = TLSv1.2

我能做些什么来启用TLS 1.2?

我写了一个简单的程序

context = SSLContext.getInstance("TLSv1.2");
context.init(null,null,null);
SSLContext.setDefault(context); 
SSLSocketFactory factory = (SSLSocketFactory)context.getSocketFactory();
SSLSocket socket = (SSLSocket)factory.createSocket();
protocols = socket.getEnabledProtocols();

在应用程序内运行此程序后,将启用TLS 1.2。我不想运行这个程序,但我想在应用程序启动期间直接启用它。有什么办法可以做到这一点吗?


答案 1

有很多建议,但我发现其中两个最常见的建议。

Re.JAVA_OPTS

在程序启动之前,我首先在命令行上尝试过,但它对我不起作用。export JAVA_OPTS="-Dhttps.protocols=SSLv3,TLSv1,TLSv1.1,TLSv1.2"

再构造函数

然后,我在启动类构造函数中添加了以下代码,它对我有用。

try {
        SSLContext ctx = SSLContext.getInstance("TLSv1.2");
        ctx.init(null, null, null);
        SSLContext.setDefault(ctx);
} catch (Exception e) {
        System.out.println(e.getMessage());
}

坦率地说,我不知道为什么,但所有(SSL / TLS)对我来说都很好。ctx.init(null, null, null);

Re. System.setProperty

还有一个选项:.它也将进入代码,但我还没有尝试过。System.setProperty("https.protocols", "SSLv3,TLSv1,TLSv1.1,TLSv1.2");


答案 2

您可以将 Java 7 版本升级到 1.7.0_131-b31

对于 Oracle 站点中的 JRE 1.7.0_131-b31:

TLSv1.2 和 TLSv1.1 现在默认在 TLS 客户端终结点上启用。这与 JDK 8 发行版中已经发生的行为类似。


推荐