服务器启用HSTS–HTTP Strict Transport Security – HTTPS教程

服务器启用HSTS–HTTP Strict Transport Security – HTTPS教程
最新回答
真情已被瓦解

2026-02-22 05:40:35

HSTS(HTTP Strict Transport Security)是一种安全机制,用于强制浏览器仅通过HTTPS访问网站,防止SSL剥离攻击。以下是在Apache、Nginx和Lighttpd服务器上配置HSTS的详细教程:

一、HSTS的作用与原理
  • 核心功能:通过HTTP响应头告知浏览器,在指定时间内(max-age)仅通过HTTPS访问该域名及其子域名(includeSubdomains)。
  • 安全增强:

    避免用户因手动输入http://或点击HTTP链接而暴露在中间人攻击中。

    配合preload指令(需额外提交)可被浏览器预加载,提供更严格的保护。

二、Apache服务器配置
  1. 启用headers模块确保Apache加载了mod_headers模块,在主配置文件(如httpd.conf)中添加:

    LoadModule headers_module modules/mod_headers.so
  2. HTTPS虚拟主机配置在443端口的<VirtualHost>块中添加HSTS头:

    <VirtualHost *:443> Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;" Header always set X-Frame-Options DENY</VirtualHost>

    max-age=63072000:设置HSTS有效期为2年(单位:秒)。

    includeSubdomains:覆盖所有子域名。

    X-Frame-Options DENY:防止点击劫持(可选安全头)。

  3. HTTP到HTTPS重定向在80端口的<VirtualHost>块中配置301跳转:

    <VirtualHost *:80> <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*)
    https://%
    {HTTP_HOST}%{REQUEST_URI} </IfModule></VirtualHost>
三、Nginx服务器配置

在Nginx的服务器块(server {})中直接添加HSTS头:

server { listen 443 ssl; server_name example.com; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains;"; add_header X-Frame-Options "DENY"; # 其他SSL配置(如证书路径、协议版本等)}
  • 注意事项:

    确保ssl参数已启用(listen 443 ssl)。

    若需预加载,可追加preload指令(需手动提交至

    HSTS预加载列表
    )。

四、Lighttpd服务器配置
  1. 加载mod_setenv模块在配置文件(如lighttpd.conf)中启用模块:

    server.modules += ("mod_setenv")
  2. 条件性添加HSTS头仅在HTTPS请求时添加响应头:

    $HTTP["scheme"] == "https" { setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains;", "X-Frame-Options" => "DENY" )}
五、验证与测试
  1. 使用开发者工具检查在浏览器中按F12打开开发者工具,访问网站后查看响应头是否包含:

    Strict-Transport-Security: max-age=63072000; includeSubdomains;
  2. 在线测试工具

    SSL Labs测试
    :评估HSTS配置是否生效。

    Security Headers扫描
    :检查其他安全头设置。

六、注意事项
  • 首次访问限制:用户首次访问网站时仍可能通过HTTP,因此需确保重定向逻辑正确。
  • 子域名覆盖:若未启用includeSubdomains,子域名可能不受保护。
  • 证书有效性:HSTS依赖有效的SSL证书,过期或自签名证书会导致浏览器拦截访问。
  • 预加载风险:提交至预加载列表后,域名将永久强制HTTPS,删除需数月生效,需谨慎操作。
(图:全球可信CA机构列表,配置HSTS前需确保使用受信任的SSL证书)

通过以上步骤,您的服务器将强制使用HTTPS,显著提升安全性。建议定期检查证书有效期并更新HSTS策略(如调整max-age值)。