2026-02-22 05:40:35
HSTS(HTTP Strict Transport Security)是一种安全机制,用于强制浏览器仅通过HTTPS访问网站,防止SSL剥离攻击。以下是在Apache、Nginx和Lighttpd服务器上配置HSTS的详细教程:
一、HSTS的作用与原理避免用户因手动输入http://或点击HTTP链接而暴露在中间人攻击中。
配合preload指令(需额外提交)可被浏览器预加载,提供更严格的保护。
启用headers模块确保Apache加载了mod_headers模块,在主配置文件(如httpd.conf)中添加:
LoadModule headers_module modules/mod_headers.soHTTPS虚拟主机配置在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:防止点击劫持(可选安全头)。
HTTP到HTTPS重定向在80端口的<VirtualHost>块中配置301跳转:
<VirtualHost *:80> <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*)在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指令(需手动提交至
加载mod_setenv模块在配置文件(如lighttpd.conf)中启用模块:
server.modules += ("mod_setenv")条件性添加HSTS头仅在HTTPS请求时添加响应头:
$HTTP["scheme"] == "https" { setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=63072000; includeSubdomains;", "X-Frame-Options" => "DENY" )}使用开发者工具检查在浏览器中按F12打开开发者工具,访问网站后查看响应头是否包含:
Strict-Transport-Security: max-age=63072000; includeSubdomains;在线测试工具
通过以上步骤,您的服务器将强制使用HTTPS,显著提升安全性。建议定期检查证书有效期并更新HSTS策略(如调整max-age值)。