【问题标题】:In Google App Engine is it possible for getScheme() on a ServletRequest to return "https" when isSecure() returns false?"在 Google App Engine 中,当 isSecure() 返回 false 时,ServletRequest 上的 getScheme() 是否可以返回“https”?
【发布时间】:2014-10-01 18:30:27
【问题描述】:

在 Google App Engine 中,当 isSecure() 返回 false 时,ServletRequest 上的 getScheme() 是否可能返回“https”?”

这是this 的后续问题。

【问题讨论】:

    标签: java google-app-engine servlets


    【解决方案1】:

    我认为这个问题缺少您在另一个问题中添加的一些上下文,因为您的担忧似乎是证书错误,我认为适当的答案是:

    getScheme() 即使在证书错误的情况下也会返回 https,但只有(当然)客户端选择接受有错误(不受信任、过期等)的服务器证书在 SSL 握手期间。例如,客户端可能使用了 curl -k 标志。

    在您最初的问题中,您提到:

    [如果 getScheme() 返回 "https"] 是否保证 HTTPS 连接已经建立并且没有证书错误?

    我认为您的问题存在一个有缺陷的假设,即证书错误意味着未建立 HTTPS 连接。在证书错误的情况下(不受信任的颁发者、过期的证书等),有两种可能:

    1. 客户端终止 SSL 握手(您的应用程序不会处理任何请求)。
    2. 客户端已明确选择信任此证书,或者选择忽略过期证书和其他错误 (curl -k)。在这种情况下,将建立一个 https 连接并且请求将继续。您的应用当然会看到 getScheme() 返回的“https”,因为建立了 https 连接。但从客户端的角度来看,它可能不是一个值得信赖的连接。

    【讨论】:

    • 你说得对,这个问题很大程度上源于我对如何建立 https 连接的不完全理解。更具体地说,我不完全了解在什么情况下可能无法建立 https 连接。不过你已经回答了我的问题。我会继续阅读这件事。感谢您提供的信息,希望您能获得一些支持。
    猜你喜欢
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 2019-06-20
    • 2013-07-03
    • 1970-01-01
    相关资源
    最近更新 更多