插件窝 干货文章 Nginx怎么部署https加密认证

Nginx怎么部署https加密认证

Nginx SSL 证书 配置 254    来源:    2025-04-22

Nginx HTTPS 部署指南

HTTPS 加密认证是保护网站数据传输安全的重要措施。以下是在 Nginx 上部署 HTTPS 的完整步骤:

1. 获取 SSL/TLS 证书

免费证书 (Let's Encrypt)

# 安装 Certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

# 获取证书 (自动配置Nginx)
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

# 设置自动续期
sudo certbot renew --dry-run

商业证书

  1. 从证书颁发机构(CA)购买证书
  2. 获取证书文件(通常包括 .crt.key 文件)

2. 配置 Nginx

编辑 Nginx 配置文件(通常位于 /etc/nginx/sites-available/yourdomain.com):

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;

    # 启用SSL会话缓存以提高性能
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # 安全协议和加密套件配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;

    # HSTS (可选但推荐)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    # 其他配置...
    location / {
        # 您的网站配置
    }
}

# HTTP重定向到HTTPS
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

3. 测试并应用配置

# 测试Nginx配置
sudo nginx -t

# 重新加载Nginx
sudo systemctl reload nginx

4. 验证HTTPS部署

使用以下工具验证您的HTTPS配置: - SSL Labs测试工具 - 浏览器检查证书有效性

高级配置选项

1. OCSP Stapling (提高性能)

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/chain.crt;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

2. 使用更安全的加密套件

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';

3. 多域名配置

server {
    listen 443 ssl;
    server_name domain1.com;
    ssl_certificate /path/to/domain1.crt;
    ssl_certificate_key /path/to/domain1.key;
    # ...
}

server {
    listen 443 ssl;
    server_name domain2.com;
    ssl_certificate /path/to/domain2.crt;
    ssl_certificate_key /path/to/domain2.key;
    # ...
}

常见问题解决

  1. 证书链不完整

    • 确保 ssl_certificate 包含中间证书
    • 使用 cat intermediate.crt >> your_domain.crt 合并证书
  2. 混合内容警告

    • 确保网页中所有资源(图片、CSS、JS)都使用HTTPS链接
  3. 性能问题

    • 启用HTTP/2: listen 443 ssl http2;
    • 启用会话恢复: ssl_session_tickets on;
  4. 证书续期失败

    • 检查Certbot日志: /var/log/letsencrypt/
    • 确保Nginx配置中没有阻止 .well-known 目录

通过以上步骤,您的Nginx服务器将能够安全地提供HTTPS服务,保护用户数据在传输过程中的安全性。