设置 HTTP 严格传输安全性 (HSTS)

您可以在响应头中指定 HTTP 严格传输安全性 (HSTS),以便服务器可向客户机公告其仅接受 HTTPS 请求。 可以将任何非 HTTPS 请求重定向到支持 SSL 的虚拟主机。

准备工作

  • 如果某个设备在 IBM HTTP Server (IHS) 之前终止 SSL/TLS,并且未对 IBM HTTP Server 配置 SSL/TLS,那么以下过程不适用。 相反,您必须在终止 SSL/TLS 的设备上配置 HTTP 严格传输安全性。 有关 HTTP 严格传输安全(Strict Transport Security)的更多信息, 参阅RFC 6797第7节。
  • 确定 HSTS 策略是仅适用于域还是也适用于子域。
  • 确定域是否可属于客户机中已知 HSTS 主机的预安装列表的一部分。
  • 确定客户机可缓存指示域为 HSTS 主机的信息的时间。
  • 限制:服务器不会将 HSTS 头添加至 HTTP 304(未修改)响应。 这些响应用于验证缓存新鲜度。 访问服务器上的至少一个未缓存(或旧)资源之前,客户机不会见到 HSTS 头。
  • 仅当客户机连接到 HTTP(端口 80)和 HTTPS(端口 443)的缺省端口时,HSTS 才有效。 如果在 IBM HTTP Server 配置中使用非缺省端口,那么您需要使用另一使用缺省端口的前端设备。 将另一前端设备放在 IBM HTTP Server 与客户机之间。 例如:
    client ----> load balancer (ports 80 and 443) ----> IHS (other ports) 

过程

  1. 支持修改响应头。
    httpd.conf 文件的 mod_headers 模块中取消注释以下装入模块伪指令。
    LoadModule headers_module modules/mod_headers.so
  2. 为客户机定义 HSTS 策略。

    httpd.conf 文件中执行以下更新:

    1. 为 Strict-Transport-Security 添加头伪指令。
      以下示例头指定用于定义 HSTS 策略的有用选项。 伪指令指定服务器始终需要 HTTPS 连接。 HTTPS 连接适用于域和所有子域。 客户机可在 HSTS 域的预安装列表中保存域最多一年(31536000 秒)。
      Header always set Strict-Transport-Security "max-age=31536000;
            includeSubDomains; preload"
    2. 在每个启用了安全套接层( SSL )的虚拟主机部分 (<virtualhost> )中添加 Header 指令。
  3. 将未启用 SSL 功能的虚拟主机请求重定向至已启用该功能的虚拟主机。
    RewriteEngine on 
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R,L]
    • 在文件 httpd.conf 中,将该段落添加到每个非 SSL 虚拟主机部分中。
    • 将该节添加到全局 httpd.conf 文件一次,但在虚拟主机部分外部添加。

结果

您可以设置 IBM® HTTP Server ,以便它告知客户机仅通过 HTTPS连接到指定的域和子域。 为确保您的 IBM HTTP Server 不会处理非 HTTPS 协议下的非 SSL 请求,您需将服务器配置为将此类请求重定向至启用了 SSL 的虚拟主机。

下一步做什么?

将服务器作为前端添加到应用程序服务器环境,以便通过 HTTPS 执行应用程序服务器和客户机之间的连接。