【问题标题】:SSL/TLS Protocol version in JavaeeJavaee 中的 SSL/TLS 协议版本
【发布时间】:2016-11-26 19:03:33
【问题描述】:

在 Java EE 中是否有任何方法可以知道用于安全连接的 SSL/TLS 协议?

理想情况下,我希望应用程序对所有内容都使用 TLS/1.2,但我知道默认情况下某些浏览器(例如 9 个)不支持该功能。如果我将我的环境配置为仅允许 TLS/1.2,那么 IE 9 将显示“哦,此网站已关闭”,如果您然后单击帮助,它实际上会告诉您“哦,这可能是 IE 中的设置禁用了明智的加密,您并这样做以启用合理的加密”。 (我稍微解释一下)。

无论如何,响应是冷的,“网站关闭”,这不是真的,它只是 IE 不希望支持合理的协议。我的偏好是更改配置以允许使用较弱的协议(如 TLS/1.0),然后我的应用程序可以检测到正在使用弱协议,并且在每个页面上都会出现某种警告“你知道这不安全,请单击此处了解更多信息”,即确认网站正常运行的有用消息,只是他们的浏览器不安全。我看不到构成 HttpServletRequest 一部分的任何属性,这些属性可能会为我提供此信息或任何其他回答问题的方法。

有什么想法吗?

【问题讨论】:

    标签: java internet-explorer ssl servlets


    【解决方案1】:

    我不确定您是否可以预先获得 TLS 协议兼容性。

    如何在请求中检查浏览器及其版本。
    如果任何浏览器(如您提到的 ie)存在问题,请在响应中发送您的警告消息以及实际内容。

    您可以使用以下方式获取浏览器信息:

    String userAgent = request.getHeader("User-Agent");
    

    此外,您可能会查找一些使用 javascript 实现此目的的答案。由于它位于客户端,因此可用于处理此类场景。

    【讨论】:

    • 不幸的是,用户代理不可靠,因为您可以使用支持 TLS 1.2 的 Internet Explorer 8,但默认情况下会特别要求使用不安全的协议。所以仅仅因为它的 IE 8 并不意味着它不安全。 JavaScript 不是理想的选择,因为它很容易禁用,这意味着检查是客户端的,因此更容易处理。
    猜你喜欢
    • 2014-02-02
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 2016-08-20
    • 2017-06-25
    • 1970-01-01
    • 2021-11-03
    • 2021-05-13
    相关资源
    最近更新 更多