使用 Nginx 部署 HTTPS:完整教程 – wiki基地

使用 Nginx 部署 HTTPS:完整教程

HTTPS,即超文本传输安全协议,是 HTTP 协议的安全版本。它通过 SSL/TLS 协议对通信进行加密,保障数据传输的安全性,防止数据被窃取或篡改。如今,HTTPS 已成为网站的标配,对于提升网站的信誉度和 SEO 排名至关重要。本文将提供一个完整的教程,详细介绍如何使用 Nginx 部署 HTTPS。

一、 获取 SSL/TLS 证书

部署 HTTPS 的第一步是获取 SSL/TLS 证书。证书是由受信任的证书颁发机构(CA)签发的数字证书,用于验证网站的身份。获取证书的方式主要有以下几种:

  1. Let’s Encrypt: Let’s Encrypt 是一个免费、自动化、开放的证书颁发机构,它提供免费的 DV (Domain Validation) 证书,有效期为 90 天。获取 Let’s Encrypt 证书可以使用 certbot 工具,该工具可以自动完成证书申请、验证和安装等步骤。

bash
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

其中,yourdomain.comwww.yourdomain.com 替换为你自己的域名。

  1. 商业 CA: 如果需要更高级别的证书,例如 OV (Organization Validation) 或 EV (Extended Validation) 证书,可以从商业 CA 购买,例如 DigiCert、Sectigo 等。这些证书提供更强的身份验证,可以增强用户信任。购买证书后,CA 会提供证书文件,通常包括 .crt.key 文件。

  2. 自签名证书: 用于测试环境或内部网络,不推荐用于生产环境。可以使用 OpenSSL 生成自签名证书:

bash
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=yourdomain.com"

二、 配置 Nginx

获取证书后,需要配置 Nginx 以启用 HTTPS。

  1. 找到 Nginx 配置文件: Nginx 的配置文件通常位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/yourdomain.com

  2. 添加 HTTPS server block: 在配置文件中添加一个 server 块,用于监听 443 端口,并配置 SSL/TLS 证书。

“`nginx
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;

   ssl_certificate /path/to/your/certificate.crt;  # 替换为你的证书路径
   ssl_certificate_key /path/to/your/private.key; # 替换为你的私钥路径

   ssl_protocols TLSv1.2 TLSv1.3;
   ssl_ciphers HIGH:!aNULL:!MD5;

   # ... 其他配置,例如 root 指令,index 指令等 ...

   location / {
       try_files $uri $uri/ =404;
   }

}
“`

  1. 强制 HTTPS: 为了确保所有流量都通过 HTTPS 访问,可以将 HTTP 流量重定向到 HTTPS。

nginx
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}

  1. 优化 SSL/TLS 配置: 为了提高安全性,可以配置更严格的 SSL/TLS 选项。例如,启用 HSTS (HTTP Strict Transport Security) 可以强制浏览器始终使用 HTTPS 访问网站。

nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

其他可以优化的选项包括:

  • ssl_prefer_server_ciphers on;: 优先使用服务器端的 cipher suite。
  • ssl_dhparam /path/to/dhparam.pem;: 使用 DH 参数增强密钥交换的安全性。可以使用 OpenSSL 生成 DH 参数:openssl dhparam -out /path/to/dhparam.pem 4096
  • ssl_session_cache shared:SSL:10m;: 启用 SSL 会话缓存,提高性能。
  • ssl_session_timeout 1d;: 设置 SSL 会话超时时间。

三、 测试和部署

完成 Nginx 配置后,需要测试配置是否正确。

  1. 检查 Nginx 配置: 使用 nginx -t 命令检查 Nginx 配置文件是否有语法错误。

  2. 重启 Nginx: 使用 systemctl restart nginxservice nginx restart 命令重启 Nginx 服务,使配置生效。

  3. 使用浏览器访问网站: 使用浏览器访问你的网站,检查是否可以通过 HTTPS 访问,并且浏览器地址栏显示安全锁标志。

  4. 使用 SSL Labs 测试: 使用 Qualys SSL Labs 的在线工具 (https://www.ssllabs.com/ssltest/) 对你的 HTTPS 配置进行测试,可以获得更详细的安全评估和建议。

四、 Let’s Encrypt 证书自动续期

Let’s Encrypt 证书的有效期为 90 天,需要定期续期。certbot 工具提供了自动续期功能。

  1. 测试自动续期: 可以使用 sudo certbot renew --dry-run 命令测试自动续期功能。

  2. 设置定时任务: 可以使用 cron 定时任务定期执行 certbot renew 命令。

bash
sudo crontab -e

添加以下内容:

0 0,12 * * * certbot renew --quiet && systemctl restart nginx

这将在每天的 0 点和 12 点检查证书是否需要续期,并在续期后重启 Nginx。

五、 总结

本文详细介绍了使用 Nginx 部署 HTTPS 的完整流程,包括获取 SSL/TLS 证书、配置 Nginx、强制 HTTPS、优化 SSL/TLS 配置、测试和部署以及 Let’s Encrypt 证书自动续期等方面。通过遵循这些步骤,可以轻松地将你的网站升级到 HTTPS,提高网站的安全性,增强用户信任,并提升 SEO 排名。 记住,安全是一个持续的过程,需要定期检查和更新你的 HTTPS 配置,以应对新的安全威胁。 希望本教程能够帮助你顺利部署 HTTPS,为你的用户提供更安全可靠的网络体验。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部