我正在尝试在使用 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 将启用。我不想运行这个程序,但我想在应用程序启动期间直接启用它。有什么办法吗?
原文由 New Bee 发布,翻译遵循 CC BY-SA 4.0 许可协议
有很多建议,但我发现其中两个最常见。
回覆。 JAVA_OPTS
我首先在程序启动前在命令行上尝试了
export JAVA_OPTS="-Dhttps.protocols=SSLv3,TLSv1,TLSv1.1,TLSv1.2"
但它对我不起作用。回覆。构造器
然后我在启动类构造函数中添加了以下代码,它对我有用。
坦率地说,我不知道为什么
ctx.init(null, null, null);
但所有 (SSL/TLS) 对我来说工作正常。回覆。系统.setProperty
还有一个选项:
System.setProperty("https.protocols", "SSLv3,TLSv1,TLSv1.1,TLSv1.2");
。它也将进入代码,但我没有尝试过。