【发布时间】:2018-09-17 06:20:58
【问题描述】:
我有一个客户端(浏览器)可以向其发出请求的 Servlet。我想知道这个请求使用了哪个 SSL 协议版本,比如我的 servlet 中的 SSL / TLS / TLS 1.1 / TLS 1.2。谁能指导我完成这个。
我正在使用 Java 8、Tomcat 8.5.9。
提前致谢
【问题讨论】:
标签: tomcat servlets ssl-certificate tls1.2
我有一个客户端(浏览器)可以向其发出请求的 Servlet。我想知道这个请求使用了哪个 SSL 协议版本,比如我的 servlet 中的 SSL / TLS / TLS 1.1 / TLS 1.2。谁能指导我完成这个。
我正在使用 Java 8、Tomcat 8.5.9。
提前致谢
【问题讨论】:
标签: tomcat servlets ssl-certificate tls1.2
根据source code,Tomcat将此信息存储在请求属性javax.servlet.request.cipher_suite和org.apache.tomcat.util.net.secure_protocol_version中。所以你应该能够做到:
public void doGet(HttpServletRequest request,
HttpServletResponse response) {
String cipherSuite = request.getAttribute("javax.servlet.request.cipher_suite");
String protocolVersion = request.getAttribute("org.apache.tomcat.util.net.secure_protocol_version");
...
}
意识到这与您配置 Tomcat 的方式有关。例如,我经常将 Apache 放在 Tomcat 前面,并使用非 SSL 连接从 Apache 到 Tomcat。在这种情况下,Tomcat 将无法为您提供所需的信息。
【讨论】:
javax.servlet.request.* 属性提供所有这些以及更多功能,无论 Apache HTTPD 是否在前面并终止 SSL 连接,它都会这样做。 HTTPD 将这一切都提供给 Tomcat。