为Debian上的Nginx SSL设置HSTS(HTTP Strict Transport Security)预加载,可以按照以下步骤进行操作:
Certbot是一个用于自动获取和续订Let’s Encrypt证书的工具。首先,确保你已经安装了Certbot。
sudo apt update
sudo apt install certbot python3-certbot-nginx
使用Certbot获取SSL证书。假设你的域名是example.com
。
sudo certbot --nginx -d example.com -d www.example.com
在安装过程中,Certbot会自动配置Nginx以使用SSL证书,并提示你输入电子邮件地址、同意服务条款等。
Certbot在安装过程中会自动添加HSTS头,但为了确保HSTS预加载,你需要手动编辑Nginx配置文件。
打开Nginx配置文件,通常位于/etc/nginx/sites-available/example.com
或/etc/nginx/nginx.conf
。
sudo nano /etc/nginx/sites-available/example.com
在server
块中添加以下HSTS头:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# 其他配置...
}
在重新加载Nginx之前,测试配置文件是否有语法错误。
sudo nginx -t
如果配置文件没有问题,重新加载Nginx以应用更改。
sudo systemctl reload nginx
为了使你的网站被浏览器预加载,你需要将域名提交到HSTS预加载列表。访问HSTS Preload Submission页面,按照指示提交你的域名。
提交后,浏览器会在未来的连接中自动启用HSTS,即使用户手动输入HTTP URL也会重定向到HTTPS。
你可以使用浏览器的开发者工具或命令行工具(如curl
)来验证HSTS头是否正确设置。
curl -I https://example.com
你应该看到类似以下的响应头:
HTTP/1.1 200 OK
...
Strict-Transport-Security: max-age=31536000; includeSubDomains
...
通过以上步骤,你已经成功为Debian上的Nginx SSL设置了HSTS预加载。