开启 HSTS 安全机制
HTTP Strict Transport Security (HSTS) 是一个安全机制, 通知浏览器将来对目网域的所有查询使用 HTTPS, 即使尝连接到 http:// 的网址, 也会强制使用 https:// 的网址.
以下分别是在 Let’s Encrypt, Apache, .htaccess 及 Nginx 开启 HSTS 的方法.
Let’s Encrypt
Let’s Encrypt 要启用 HSTS, 当建立凭证时, 加入 –hsts 参数, 即使凭证已经建立, 使用同样的指令并加上 –hsts 参数, 这会尝试重新建立已有的凭证。
Apache
开启 Apache 的设定档, 或相应 virtualhost 的设定档, 例如:
/etc/apache2/sites-enabled/domain.conf 或
/etc/httpd/sites-enabled/domain.conf
找到 virtualhost 443 的部份, 加入以下一行, 例如:
<virtualhost *:443="">
Header always set Strict-Transport-Security "max-age=31536000"
......
......
</virtualhost>
修改后重新启动 Apache:
$ sudo systemctl restart httpd
.htaccess
如果网站支援 .htaccess, 在网站根目录的 .htacess 加入以下一行:
Header always set Strict-Transport-Security "max-age=31536000" env=HTTPS
加入后便会立即生效.
Nginx
开启 Nginx 的设定档, 或个别主机的设定档, 例如:
/etc/nginx/nginx.conf 或
/etc/nginx/sited-enabled/yoursite.com (Ubuntu / Debian) 或
/etc/nginx/conf.d/nginx.conf (RHEL / Rocky Linux / CentOS)
开 port 443 的 server block 设定, 加入 HSTS 设定, 例如:
server {
listen 443;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; ";
......
......
}
修改后重新启动 Nginx:
$ sudo systemctl restart nginx