对不起,如果我的问题似乎多余了。我发现大量的Q& As on stackoverflow和一堆其他资源关于为Tomcat启用TLSv1.1 +,对于Java客户端,对于操作系统...,但我仍然无法在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的原因一切正常,无需修改代码。
答案 0 :(得分:0)
要在tomcat中启用Tls,请在tomcat / conf /文件夹中tomcat的server.xml文件的Connector部分中添加此参数 sslEnabledProtocols =“ TLSv1.X” 。例如:要配置TLSv1.1,请遵循以下配置。
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="ssl/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="SSL" sslEnabledProtocols="TLSv1.1" />
重新启动服务器