【问题标题】:SSL Protocal used by Browser to Send Request to Server浏览器用来向服务器发送请求的 SSL 协议
【发布时间】: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


    【解决方案1】:

    根据source code,Tomcat将此信息存储在请求属性javax.servlet.request.cipher_suiteorg.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 将无法为您提供所需的信息。

    【讨论】:

    • 根据 Java Servlet 规范,Tomcat 通过进一步的javax.servlet.request.* 属性提供所有这些以及更多功能,无论 Apache HTTPD 是否在前面并终止 SSL 连接,它都会这样做。 HTTPD 将这一切都提供给 Tomcat。
    • @stdnubar String protocolVersion = request.getAttribute("org.apache.tomcat.util.net.secure_protocol_version");如果我直接访问我的站点,即中间没有 apache 服务器,则上面的行给了我 SSL 协议版本,但如果请求是通过 apache 发出的,那么它给出 null,你知道为什么会这样吗?
    • @AmeySawant 看这里:serverfault.com/questions/752336/…
    猜你喜欢
    • 2013-08-13
    • 2019-03-30
    • 2021-03-30
    • 2021-07-15
    • 2022-01-12
    • 2013-08-01
    • 2016-08-05
    • 2019-05-16
    • 2012-12-20
    相关资源
    最近更新 更多