java - 如何配置 Tomcat 以在出站连接中使用 TLS v1.2

标签 java tomcat ssl tls1.2 apigee

我的 Web 应用程序正在使用 Apigee 背后的某些 REST 服务(是其客户端),现在当 Apigee 只需要与 TLS v1.2 进行通信时,我们作为该 REST 服务的客户端也会收到通知,我们的请求将被如果我们不将我们的网络应用配置为使用更新版本的 TLS,则会被拒绝。

我正在使用 Java 7 和 Tomcat 7,我知道这些 Java 和 Tomcat 支持开箱即用的 TLS v1.2 连接,但是我没有在 Tomcat 服务器上配置 SSL/TLS,因为我仅将 Tomcat 用作 SSL 通信的 HTTP 和出站代理。

问题一:
有什么方法可以检查在 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?

使用系统属性 javax.net.debug=ssl 运行——通常最好在 setenv.shCATALINA_OPTS 中设置setenv.bat 虽然可能有其他方法——并捕获写入标准输出的相当多的跟踪——如何做到这一点取决于您的环境。这将记录 JVM 进程中的所有 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
getting javax.net.ssl.SSLException: Received fatal alert: protocol_version while scraping data using Jsoup
Enable TLS 1.2 on JDK7 Client side
How to enable TLSv1.1+ outbound communication from web app on Win10/Tomcat7/Java7?
Server closes connections made using httpclient and Java 7
SSLHandshakeException : Remote host closed connection during handshake
How to enable TLS 1.2 in Java 7
TLS 1.2 was supported in Java 8 but not in Java 7

最后两个指出,如果您支付 Oracle 支持契约(Contract)的费用,您可以简单地升级到 7u131(或更好)。或者,如果您(可以)使用 OpenJDK。

关于java - 如何配置 Tomcat 以在出站连接中使用 TLS v1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50755112/

相关文章:

java - 如何自动将 war 从 Nexus 部署到 Tomcat?

java - 如何使用maven插件tomcat7 :run with multiple contexts (WARs)?

android - 移动应用程序中的客户端 SSL 证书有多安全?

internet-explorer - 使用在 IE Trusted Root 中导入的证书不信任 Root CA

java - 数据报接收方法因超时而被阻止

java - GridBagConstraints weightx 和 weighty 值

tomcat - 无法 "Unlock the Jenkins"。即使我正在输入正确的 key 。页面正在重新加载

django - Mod_wsgi https 错误连接被拒绝

java - wsgen 'Class not found'

java - 解码具有多个同名元素的 XML JAXB