插件窝 干货文章 如何实现Nginx的SSL证书配置

如何实现Nginx的SSL证书配置

配置 Nginx 证书 SSL 688    来源:    2025-04-10

Nginx SSL证书配置指南

配置SSL证书是保护网站安全的重要步骤。以下是详细的Nginx SSL证书配置方法:

准备工作

  1. 获取SSL证书(通常包括以下文件):

    • 域名证书(如 domain.crt
    • 证书链文件(如 chain.crt
    • 私钥文件(如 domain.key
  2. 将证书文件上传到服务器(建议存放在 /etc/nginx/ssl/ 目录)

基本SSL配置

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

server {
    listen 443 ssl;
    server_name yourdomain.com;

    # 证书路径
    ssl_certificate /etc/nginx/ssl/domain.crt;
    ssl_certificate_key /etc/nginx/ssl/domain.key;

    # 证书链配置
    ssl_trusted_certificate /etc/nginx/ssl/chain.crt;

    # SSL协议配置
    ssl_protocols TLSv1.2 TLSv1.3;

    # 加密套件配置
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
    ssl_prefer_server_ciphers on;

    # 其他配置...
    location / {
        # 网站内容配置
    }
}

增强安全性配置

# 启用HSTS (HTTP Strict Transport Security)
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";

# OCSP Stapling 配置
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

HTTP重定向到HTTPS

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

验证配置

  1. 测试Nginx配置是否正确:

    sudo nginx -t
    
  2. 重新加载Nginx配置:

    sudo systemctl reload nginx
    

证书自动续期(使用Certbot)

如果使用Let's Encrypt证书,可以设置自动续期:

  1. 安装Certbot:

    sudo apt install certbot python3-certbot-nginx
    
  2. 获取证书:

    sudo certbot --nginx -d yourdomain.com
    
  3. 设置自动续期(添加到crontab):

    echo "0 12 * * * /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontab > /dev/null
    

注意事项

  1. 确保证书和私钥文件的权限设置为仅root可读:

    chmod 600 /etc/nginx/ssl/*
    
  2. 定期检查证书有效期,避免过期

  3. 使用SSL测试工具(如 SSL Labs)验证配置安全性

  4. 对于现代浏览器,建议禁用TLS 1.0和1.1,仅使用TLS 1.2和1.3

  5. 考虑启用HTTP/2以提升性能:

    listen 443 ssl http2;
    

通过以上配置,您的Nginx服务器将能够提供安全的HTTPS连接,保护用户数据传输的安全性。