插件窝 干货文章 Nginx如何配置ssl证书

Nginx如何配置ssl证书

Nginx yourdomain SSL 配置 351    来源:    2025-04-24

Nginx SSL证书配置指南

配置SSL证书可以让你的网站启用HTTPS安全连接,以下是详细的配置步骤:

1. 准备工作

  • 已获取SSL证书文件(通常包括.crt.key文件)
  • 确保Nginx已安装并正常运行
  • 确保服务器443端口已开放

2. 基本SSL配置

在Nginx配置文件中(通常在/etc/nginx/sites-available/yourdomain.conf),添加以下内容:

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /path/to/your_domain.crt;
    ssl_certificate_key /path/to/your_domain.key;

    # 其他配置...
}

3. 推荐的安全配置

server {
    listen 443 ssl http2;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /path/to/your_domain.crt;
    ssl_certificate_key /path/to/your_domain.key;

    # 启用TLS 1.2和1.3,禁用不安全的旧版本
    ssl_protocols TLSv1.2 TLSv1.3;

    # 推荐的安全加密套件
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';

    ssl_prefer_server_ciphers on;

    # 启用OCSP Stapling提高性能
    ssl_stapling on;
    ssl_stapling_verify on;

    # 使用DH参数增强安全性
    ssl_dhparam /etc/nginx/dhparam.pem;

    # 设置HSTS头
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

    # 其他配置...
}

4. 生成DH参数文件

运行以下命令生成DH参数文件:

sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048

5. HTTP重定向到HTTPS

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

6. 测试并重启Nginx

测试配置是否正确:

sudo nginx -t

如果测试通过,重启Nginx:

sudo systemctl restart nginx

7. 证书自动续期(使用Let's Encrypt)

如果使用Let's Encrypt证书,可以安装certbot自动续期:

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

设置自动续期:

sudo certbot renew --dry-run

注意事项

  1. 确保证书文件路径正确且Nginx有读取权限
  2. 私钥文件(.key)必须保持私密,权限设置为600
  3. 定期检查证书有效期并设置自动续期
  4. 使用SSL测试工具(如SSL Labs)检查配置安全性

完成以上步骤后,你的网站应该可以通过HTTPS安全访问了。