在 Debian 12.0 上为 Nginx 设置 SSL/TLS 证书,可以使用免费的 Let’s Encrypt 证书,通过工具 Certbot 主动完成证书获取和设置。以下是详细步骤:
- 安装 Certbot 和 Nginx 插件
Certbot 是一个工具,可以从 Let’s Encrypt 获取证书并主动设置到 Nginx。
运行以下命令安装 Certbot 和其 Nginx 插件:
- sudo apt update
- sudo apt install certbot python3-certbot-nginx -y
复制代码 在你的域名注册商控制面板中,将域名的 A 记录 和 CNAME 记录 指向你的服务器 IP 地址。
例如:
范例主机名值A@你的服务器 IP 地址 然后等待 DNS 剖析生效。可以通过以下命令验证 DNS 剖析是否正确:
假如返回了你的服务器 IP,说明剖析已经生效。
Certbot 会主动为你的域名获取 Let’s Encrypt 的免费证书并设置 Nginx。
实行以下命令:
- sudo certbot --nginx -d your-domain.com -d www.your-domain.com
复制代码- • 将 your-domain.com 替换为你的实际域名。
- • 如果你有多个域名,可以用 -d 参数添加更多域名。
复制代码 交互过程
Certbot 会提示你完成以下操作:
1. 输入邮箱地址,用于吸收证书过期提示。
2. 同意 Let’s Encrypt 服务条款。
3. 选择是否逼迫将 HTTP 流量重定向到 HTTPS(建议选择 2 逼迫重定向)。
Certbot 完成后,会看到如下提示:
- Successfully received certificate.
- Certificate is saved at: /etc/letsencrypt/live/your-domain.com/fullchain.pem
- Key is saved at: /etc/letsencrypt/live/your-domain.com/privkey.pem
复制代码 这表现证书已经乐成获取,并主动设置到了 Nginx。
Certbot 会主动修改 Nginx 的站点设置文件,例如 /etc/nginx/sites-available/your-domain.com,并添加如下内容:
- server {
- listen 443 ssl;
- listen [::]:443 ssl;
- server_name your-domain.com www.your-domain.com;
- ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
- ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
- ssl_protocols TLSv1.2 TLSv1.3;
- ssl_ciphers HIGH:!aNULL:!MD5;
- root /var/www/your-domain.com;
- index index.html index.htm;
- location / {
- try_files $uri $uri/ =404;
- }
- }
- server {
- listen 80;
- listen [::]:80;
- server_name your-domain.com www.your-domain.com;
- return 301 https://$host$request_uri;
- }
复制代码 测试 Nginx 设置是否正确:
假如没有错误,重新加载 Nginx:
- sudo systemctl reload nginx
复制代码 在浏览器中访问 https://your-domain.com 和 https://www.your-domain.com,确认网站使用 HTTPS 并表现有效的锁标志。
你也可以通过以下命令验证证书:
- openssl s_client -connect your-domain.com:443 -servername your-domain.com
复制代码 Let’s Encrypt 的证书有效期为 90 天,Certbot 会主动安排续期。
可以手动测试续期命令,确保没有问题:
- sudo certbot renew --dry-run
复制代码 假如没有错误,说明主动续期功能已设置好。
你可以在 Nginx 设置中添加一些额外设置来提高安全性:
- ssl_protocols TLSv1.2 TLSv1.3;
- ssl_prefer_server_ciphers on;
- ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
- ssl_session_cache shared:SSL:10m;
- ssl_session_timeout 10m;
- # 禁用不安全的协议
- add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
- add_header X-Content-Type-Options nosniff;
- add_header X-Frame-Options DENY;
- add_header X-XSS-Protection "1; mode=block";
复制代码 生存后,重新加载 Nginx:
- sudo systemctl reload nginx
复制代码 总结
- 1. 安装 Certbot 和插件。
- 2. 配置域名 DNS 解析。
- 3. 使用 Certbot 获取和配置证书:certbot --nginx -d your-domain.com -d www.your-domain.com
- 4. 测试配置并重新加载 Nginx。
- 5. 验证 HTTPS 是否正常工作。
- 6. 确保自动续期功能正常:certbot renew --dry-run。
复制代码 如许,你的 Nginx 网站就乐成绑定了 HTTPS 证书,并且会主动续期,保持安全!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |