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 的部份, 加入以下一行, 例如:
|
1 2 3 4 5 |
<virtualhost *:443=""> Header always set Strict-Transport-Security "max-age=31536000" ...... ...... </virtualhost> |
修改后重新启动 Apache:
$ sudo systemctl restart httpd
.htaccess
如果网站支援 .htaccess, 在网站根目录的 .htacess 加入以下一行:
|
1 |
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 设定, 例如:
|
1 2 3 4 5 6 |
server { listen 443; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; "; ...... ...... } |
修改后重新启动 Nginx:
$ sudo systemctl restart nginx