参考资料

  1. 实现HTTPS自动跳转的详细说明
  2. windows ssl设置详细说明以及案例
  3. nginx ssl证书配置步骤详细说明以及案例
  4. SSL证书的费用与成本
  5. 免费SSL证书的获取途径
  6. SSL证书的安装与配置方法
  7. Linux系统配置SSL指南
  8. 企业应如何根据需求选择SSL证书

nginx ssl配置步骤

  1. 安装nginx

    • Ubuntu/Debian: sudo apt-get install nginx

    • CentOS/RHEL: sudo yum install nginx

  2. 获取SSL证书

    • 从CA机构购买或使用Let's Encrypt免费证书

    • 或生成自签名证书:  

      sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
  3. 配置nginx

    • 编辑配置文件(通常位于/etc/nginx/sites-available/default/etc/nginx/conf.d/default.conf

    • 添加SSL相关配置

  4. 重启nginx

    sudo systemctl restart nginx

适用操作系统

  • Linux发行版(Ubuntu/Debian/CentOS/RHEL等)

  • 理论上也适用于Windows版nginx

证书有效性要求

  1. 证书必须在有效期内

  2. 证书链必须完整

  3. 私钥必须匹配

  4. 证书的CN或SAN必须包含域名

配置示例

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

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

    location / {
        root /var/www/html;
        index index.html;
    }
}

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

调试与验证

  1. 检查nginx配置语法:

    sudo nginx -t
  2. 查看nginx错误日志:

    tail -f /var/log/nginx/error.log
  3. 在线验证工具:

  4. 命令行验证:

    openssl s_client -connect example.com:443 -servername example.com

注意事项

  1. 使用强加密算法(推荐TLS 1.2/1.3)

  2. 定期更新证书(特别是Let's Encrypt的90天证书)

  3. 确保私钥文件权限设置为600

  4. 配置HTTP到HTTPS的重定向

  5. 启用HSTS头部增强安全性

  6. 生产环境不建议使用自签名证书

  7. 注意混合内容问题(确保所有资源都通过HTTPS加载)

  8. 考虑启用OCSP Stapling提高性能