首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有HSTS的HTTPS的Tomcat 9配置

带有HSTS的HTTPS的Tomcat 9配置
EN

Stack Overflow用户
提问于 2020-10-06 16:26:20
回答 1查看 3.5K关注 0票数 1

我们正在尝试为安装在Windows server 2016上的Tomcat 9服务器上的应用程序设置HSTS,而没有IIS。当我从其中加载一个页面时,开发人员控制台中的响应头确实包括strict-transport-security: max-age=31536000;includeSubDomains;preload。问题是,当运行漏洞扫描时,它会返回错误消息,表示“远程web服务器没有强制执行HSTS”。我们还收到消息说启用了TLSv1.0。

我还应该注意,Tomcat提供的页面是使用主域名访问的,该域名访问的是一个负载均衡器,它也用作反向代理,并将所有请求传递给Tomcat。我们使用分配给负载均衡器的主域对其进行扫描,并直接使用Tomcat服务器名,而不使用负载均衡器,并获得相同的扫描结果。

我已经包含了我们要添加到Tomcat、server.xmlweb.xml文件中的内容。对于我们做错了什么,或者遗漏了什么,我们将不胜感激。

我们在server.xml文件中包含了以下内容:

代码语言:javascript
复制
<!--  For Redirect from HTTP to HTTPS  -->
<Connector executor="tomcatThreadPool"
           port="80"
           protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="443"/>


<!--  SSL Connector  -->
<Connector
    port="443"
    scheme="https"
    secure="true"
    SSLEnabled="true"
    protocol="org.apache.coyote.http11.Http11Nio2Protocol"
    sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation">

    <SSLHostConfig sslProtocol="TLS"
                   protocols="TLSv1.2+TLSv1.3"
                   certificateKeystoreFile="G:\keystore\OUR_KEYSTORE_FILE.jks"
                   certificateKeystorePassword="OUR_KEYSTORE_PASSWORD"
                   certificateKeystoreType="JKS">
    </SSLHostConfig>
</Connector>

我们已经为HSTS和重定向配置了web.xml文件如下:

代码语言:javascript
复制
<!-- Enable HSTS   -->
<filter>
    <filter-name>httpHeaderSecurity</filter-name>
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
    <init-param>
        <param-name>hstsEnabled</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>hstsMaxAgeSeconds</param-name>
        <param-value>31536000</param-value>
    </init-param>
    <init-param>
        <param-name>hstsIncludeSubDomains</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>hstsPreload</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>antiClickJackingOption</param-name>
        <param-value>ALLOW-FROM</param-value>
    </init-param>
    <init-param>
        <param-name>antiClickJackingUri</param-name>
        <param-value>https://OUR_PRIMARY_DOMAIN.HERE</param-value>
    </init-param>
    <async-supported>true</async-supported>
</filter>

<!-- Enable HSTS Filter  -->
<filter-mapping>
    <filter-name>httpHeaderSecurity</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>
    
    
<!--  for Redirect from HTTP to HTTPS  -->
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Entire Application</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>
EN

回答 1

Stack Overflow用户

发布于 2022-10-19 06:13:09

问题是,如果您使用http尝试您的url,并且应该将您重定向到https,那么您使用https的第一个请求将在响应头中像非权威的原因: HSTS那样显示您,那么您可以看到第二个请求将与https一起发送到与您所引导的所有80到443相同的端点,在那里您可以看到相关的头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64230009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档