如何配置 Tomcat 以在出站连接中使用 TLS v1.2
How to configure Tomcat to use TLS v1.2 in OUTBOUND connections
我的 Web 应用程序正在使用 Apigee 背后的某些 REST 服务(是其客户端),现在当 Apigee 只需要与 TLS v1.2 通信时,我们作为该 REST 服务的客户端也会收到我们的请求通知如果我们不将我们的网络应用配置为使用更新版本的 TLS,将会被拒绝。
我正在使用 Java 7 和 Tomcat 7,我知道那些 Java 和 Tomcat 支持开箱即用的 TLS v1.2 连接,但是我没有在 Tomcat 服务器 上配置 SSL/TLS,因为我使用 Tomcat 仅作为 SSL 通信的 HTTP 和出站代理。
问题 1:
有什么方法可以检查在 Tomcat 上发送我的 Web 应用程序的请求类型,这些请求是否会被仅接受 TLS v1.2 的服务器拒绝?
问题二:
如果默认没有配置,如何在Tomcat上配置?我从 official doc 找到了这个,但我想知道这是否只影响 INBOUND 或 OUTBOUND 连接。
Is there any way to check what kind of requests is sending my web application on Tomcat and will those requests will be refused by server that accepts only TLS v1.2?
运行 with system 属性 javax.net.debug=ssl
-- 通常最好设置在 CATALINA_OPTS
in setenv.sh
or setenv.bat
尽管可能有其他方法——并捕获写入标准输出的相当多的跟踪——如何做到这一点取决于您的环境。这将在 JVM 进程中记录 all SSL/TLS 连接,但由于您没有使用 SSL/TLS (HTTPS) 入站,这应该不是问题。
或者,使用 Wireshark 或 tcpdump 或类似工具从网络中捕获;这可能需要 root 或某些 (Linux) 能力,但可以过滤到仅感兴趣的连接。
是的,如果您(通过 Java)发送不提供 1.2 的握手,而服务器需要(仅)1.2,握手将失败。
If it's not configured by default, how to configure it on Tomcat? I have found this from official doc, but I am wondering does this affect only INBOUND, or also OUTBOUND connections.
是的,这只会影响入站 SSL/TLS (HTTPS) 连接。 Tomcat 代码通常只处理入站 HTTP 或 HTTPS 连接;任何出站连接要么在您的代码中显式显示,要么在您调用的库代码中显示,例如数据库驱动程序。
Oracle 的免费版本 Java 7 实现 TLS 1.2 但 禁用 它(以及 1.1 也适用于客户端)默认。如何更改它取决于您的代码如何建立连接,例如通过什么库,而您没有提供任何相关信息。有很多关于这个的堆栈问题(很多年前),例如:
https://superuser.com/questions/747377/enable-tls-1.1-and-1.2-for-clients-on-java-7
Enable TLS 1.2 on JDK7 Client side
How to enable TLSv1.1+ outbound communication from web app on Win10/Tomcat7/Java7?
How to enable TLS 1.2 in Java 7
最后两个指出,如果您支付 Oracle 支持合同的费用,您可以简单地升级到 7u131(或更好)。或者,如果您(可以)使用 OpenJDK。
我的 Web 应用程序正在使用 Apigee 背后的某些 REST 服务(是其客户端),现在当 Apigee 只需要与 TLS v1.2 通信时,我们作为该 REST 服务的客户端也会收到我们的请求通知如果我们不将我们的网络应用配置为使用更新版本的 TLS,将会被拒绝。
我正在使用 Java 7 和 Tomcat 7,我知道那些 Java 和 Tomcat 支持开箱即用的 TLS v1.2 连接,但是我没有在 Tomcat 服务器 上配置 SSL/TLS,因为我使用 Tomcat 仅作为 SSL 通信的 HTTP 和出站代理。
问题 1:
有什么方法可以检查在 Tomcat 上发送我的 Web 应用程序的请求类型,这些请求是否会被仅接受 TLS v1.2 的服务器拒绝?
问题二:
如果默认没有配置,如何在Tomcat上配置?我从 official doc 找到了这个,但我想知道这是否只影响 INBOUND 或 OUTBOUND 连接。
Is there any way to check what kind of requests is sending my web application on Tomcat and will those requests will be refused by server that accepts only TLS v1.2?
运行 with system 属性 javax.net.debug=ssl
-- 通常最好设置在 CATALINA_OPTS
in setenv.sh
or setenv.bat
尽管可能有其他方法——并捕获写入标准输出的相当多的跟踪——如何做到这一点取决于您的环境。这将在 JVM 进程中记录 all SSL/TLS 连接,但由于您没有使用 SSL/TLS (HTTPS) 入站,这应该不是问题。
或者,使用 Wireshark 或 tcpdump 或类似工具从网络中捕获;这可能需要 root 或某些 (Linux) 能力,但可以过滤到仅感兴趣的连接。
是的,如果您(通过 Java)发送不提供 1.2 的握手,而服务器需要(仅)1.2,握手将失败。
If it's not configured by default, how to configure it on Tomcat? I have found this from official doc, but I am wondering does this affect only INBOUND, or also OUTBOUND connections.
是的,这只会影响入站 SSL/TLS (HTTPS) 连接。 Tomcat 代码通常只处理入站 HTTP 或 HTTPS 连接;任何出站连接要么在您的代码中显式显示,要么在您调用的库代码中显示,例如数据库驱动程序。
Oracle 的免费版本 Java 7 实现 TLS 1.2 但 禁用 它(以及 1.1 也适用于客户端)默认。如何更改它取决于您的代码如何建立连接,例如通过什么库,而您没有提供任何相关信息。有很多关于这个的堆栈问题(很多年前),例如:
https://superuser.com/questions/747377/enable-tls-1.1-and-1.2-for-clients-on-java-7
Enable TLS 1.2 on JDK7 Client side
How to enable TLSv1.1+ outbound communication from web app on Win10/Tomcat7/Java7?
How to enable TLS 1.2 in Java 7
最后两个指出,如果您支付 Oracle 支持合同的费用,您可以简单地升级到 7u131(或更好)。或者,如果您(可以)使用 OpenJDK。