debian

如何为Debian Nginx SSL设置HSTS预加载

小樊
34
2025-06-12 04:35:11
栏目: 云计算

为Debian上的Nginx SSL设置HSTS(HTTP Strict Transport Security)预加载,可以按照以下步骤进行操作:

1. 安装Certbot

Certbot是一个用于自动获取和续订Let’s Encrypt证书的工具。首先,确保你已经安装了Certbot。

sudo apt update
sudo apt install certbot python3-certbot-nginx

2. 获取SSL证书

使用Certbot获取SSL证书。假设你的域名是example.com

sudo certbot --nginx -d example.com -d www.example.com

在安装过程中,Certbot会自动配置Nginx以使用SSL证书,并提示你输入电子邮件地址、同意服务条款等。

3. 启用HSTS

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;

    # 其他配置...
}

4. 测试Nginx配置

在重新加载Nginx之前,测试配置文件是否有语法错误。

sudo nginx -t

如果配置文件没有问题,重新加载Nginx以应用更改。

sudo systemctl reload nginx

5. 提交HSTS预加载列表

为了使你的网站被浏览器预加载,你需要将域名提交到HSTS预加载列表。访问HSTS Preload Submission页面,按照指示提交你的域名。

提交后,浏览器会在未来的连接中自动启用HSTS,即使用户手动输入HTTP URL也会重定向到HTTPS。

6. 验证HSTS头

你可以使用浏览器的开发者工具或命令行工具(如curl)来验证HSTS头是否正确设置。

curl -I https://example.com

你应该看到类似以下的响应头:

HTTP/1.1 200 OK
...
Strict-Transport-Security: max-age=31536000; includeSubDomains
...

通过以上步骤,你已经成功为Debian上的Nginx SSL设置了HSTS预加载。

0
看了该问题的人还看了