用户在支持国密的 Nginx 中配置 `Strict-Transport-Security` (HSTS)头部,与在普通 Nginx 中的操作没有区别。其核心是在正确配置国密 HTTPS 站点的基础上,于该站点的`server`配置块中,使用`add_header`指令添加 HSTS 头部。
一、配置 HSTS 参数
`add_header` 指令的标准格式如下:
nginx
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
`max-age=<seconds>`:强制浏览器访问必须使用HTTPS的时长。官网推荐`63072000`秒(即2年)。
`includeSubDomains`(可选):表示该规则对所有子域名也生效。
`preload`(可选):允许将域名加入浏览器的内置STS列表,确保即使是第一次访问也使用HTTPS。提交前,请在 [hstspreload.org](https://hstspreload.org) 完成严格的测试。
`always`:确保服务器在返回错误页面(如4xx, 5xx)时,也会发送该头部。
二、在国密 Nginx 中应用
1. 编辑配置文件
找到已配置好的国密 HTTPS `server` 块,将 HSTS 指令添加进去:
nginx
server {
listen 443 ssl;
server_name www.yourdomain.com;
# ... 国密 SSL 配置部分(证书、协议、加密套件等)...
# 添加 HSTS 头部配置
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
}
2. 检查与重载配置
修改完成后,务必执行以下命令确保配置更新生效:
bash
# 检查配置文件语法是否正确
sudo nginx -t
# 如果检查无误,则重载Nginx服务
sudo systemctl reload nginx
三、验证方式
配置生效后,可通过以下步骤验证:
浏览器开发者工具:访问网站,打开“网络”(Network)标签。在响应头中应能找到 `Strict-Transport-Security` 头部,其值与配置内容一致。
Curl命令行测试:执行 `curl -I https://你的域名`,检查返回信息中是否包含 HSTS 头字段。
四、注意事项
HTTPS 是前提:HSTS 必须建立在功能完整的 HTTPS 站点之上。在启用 HSTS 策略前,请务必确保国密 HTTPS 访问一切正常。
谨慎启用 `preload`:`preload` 会将域名写入浏览器内置列表,策略回退非常困难。请在测试充分后再提交至 [hstspreload.org](https://hstspreload.org)。