如何在Win10 / Tomcat7 / Java7上从Web应用程序启用TLSv1.1 +出站通信?

对不起,如果我的问题似乎多余 我发现了大量的关于stackoverflow的问答以及一些关于为Tomcat,Java客户端,操作系统启用TLSv1.1 +的其他资源……但是我仍然无法在Win10 / Tomcat7 / Java7上的本地环境中启用它。 可能,我只是弄错了。

所以,要清楚,我在tomcat上部署了一个java web应用程序。 此Web应用程序通过https向远程服务发出请求。 以前这些远程服务支持TLSv1.0,我的应用程序运行正常。 现在这些远程服务只支持TLSv1.1 +,我收到错误/实际上是一个简单的html页面响应说:

To access this website, update your web browser or upgrade your operating system to support TLSv1.1 or TLSv1.2 

我试图以多种方式为我的webapp启用TLSv1.1 +出站通信支持,但它仍然无效。 所以,我尝试过:

 set CATALINA_OPTS=-Dhttps.protocols=TLSv1.1,TLSv1.2 set CATALINA_OPTS=-Ddeployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true 

JAVA_OPTS 。 我通过添加系统环境变量并在启动tomcat之前简单地设置cmd来尝试它。 此外,我在控制面板\程序\ Java控制面板高级选项卡上设置TLSv1.1和TLSv1.2支持。

这是关于我的环境的详细信息:

Windows版本:

 Microsoft Windows [Version 10.0.14393] 

Tomcat启动日志(前n行):

 c:\Program Files\apache-tomcat-7.0.72\bin>catalina.bat run Using CATALINA_BASE: "C:\Program Files\apache-tomcat-7.0.72" Using CATALINA_HOME: "C:\Program Files\apache-tomcat-7.0.72" Using CATALINA_TMPDIR: "C:\Program Files\apache-tomcat-7.0.72\temp" Using CATALINA_OPTS: "-Dhttps.protocols=TLSv1.1,TLSv1.2 -Xms1024m -Xmx2048m -XX:MaxPermSize=256m" Using JRE_HOME: "C:\Program Files\Java\jdk1.7.0_80\jre" Using CLASSPATH: "C:\Program Files\apache-tomcat-7.0.72\bin\bootstrap.jar;C:\Program Files\apache-tomcat-7.0.72\bin\tomcat-juli.jar" Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Server version: Apache Tomcat/7.0.72 Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Server built: Sep 14 2016 12:12:26 UTC Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Server number: 7.0.72.0 Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log INFO: OS Name: Windows 8.1 Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log INFO: OS Version: 6.3 Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Architecture: amd64 Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Java Home: C:\Program Files\Java\jdk1.7.0_80\jre Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log INFO: JVM Version: 1.7.0_80-b15 Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log ... 

我无法得到我做错的事。

更新:

如果我将tomcat的JRE_HOME切换到JAVA 8,它可以正常工作

现在我通过添加此代码来修复它以配置apache HttpClient:

 SSLContext sslContext = null; try { sslContext = SSLContexts.custom().useTLS().build(); } catch (KeyManagementException | NoSuchAlgorithmException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } SSLConnectionSocketFactory f = new SSLConnectionSocketFactory(sslContext, new String[] { "TLSv1.1", "TLSv1.2" }, null, new AllowAllHostnameVerifier()); httpclient = HttpClients.custom().setSSLSocketFactory(f).build(); 

但是,如果没有代码修改仍然无法完成? 通过某种方式配置tomcat java或系统? JAVA 8的原因一切正常,无需修改代码。

要在tomcat中启用Tls,请在tomcat / conf /文件夹中的tomcat的server.xml文件的Connector部分中添加此参数sslEnabledProtocols =“TLSv1.X” 。 例如:配置TLSv1.1遵循以下配置。

   

重启服务器