我在Tomcat上有一个网络应用程序。我有一个用于测试 SSL 的自签名证书。我所做的每一个调用,(get,ajax,css和javascript导入)Firefox都会抛出:
Strict-Transport-Security: The connection to the site is untrustworthy, so the specified header was ignored.
现在我已经为我的网站添加了 FF 的例外,并且我的浏览器左上角有一个绿色的锁符号。我知道HSTS是什么,但我很确定我没有以任何方式设置它。在控制台中,我在响应标头中看到了这一点:
Strict-Transport-Security:"max-age=31536000 ; includeSubDomains"
那么为什么FF说我的网站不可信,这个标题是如何出现在我的响应中的,我如何让这个错误消失呢?
更新 我已将自签名证书安装到我的 jdk cacerts 文件中。 我可以使用 HttpsURLConnection 连接到站点,request.isSecure() 返回 true,request.getScheme() 返回 https,但 request.getProtocol() 返回 HTTP/1.1
在我的应用程序中,我想用https运行tomcat,因此我遵循了此链接中提到的步骤:Tomcat中的HTTPS。
请注意,它说要修改网络.xml,我刚刚从网络中删除了以下内容.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Firefox中的警告消失了。
此外,在您的情况下,您可能需要添加以下配置:
<security-constraint>
<web-resource-collection>
<web-resource-name>unchecked</web-resource-name>
<url-pattern>/static/*</url-pattern>
<url-pattern>/webjars/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
在上述配置中,对于所有不需要安全约束的 url,您需要将它们添加到<transport-gurantee>NONE</transport-guarantee>
中的<url-pattern>
中。希望它对我有帮助。这是一个有用的链接:https://dzone.com/articles/understanding-web-security