CentOS系统Nginx配置SSL证书完整指南 (2026)

>CentOS系统Nginx配置SSL证书完整指南

>引言

在当今互联网环境中,网站安全已成为每个站长的必修课。SSL证书不仅能够加密用户与服务器之间的数据传输,还能提升网站在搜索引擎中的排名。本文将详细介绍如何在CentOS系统上为Nginx服务器安装和配置SSL证书。

>准备工作

在开始安装之前,请确保您具备以下条件:

    >

  • 一台运行CentOS的服务器(本文适用于CentOS 7/8/Stream版本)
  • 已安装Nginx Web服务器
  • 拥有root权限或sudo权限的账户
  • 一个已解析到服务器IP的域名
  • SSL证书文件(可以从证书颁发机构获取)
  • >第一步:获取SSL证书

    您可以选择以下几种方式获取SSL证书:

    >1. 使用Let’s Encrypt免费证书

    Let’s Encrypt提供免费的SSL证书,非常适合个人和小型网站:

    >

    安装certbot工具

    sudo yum install certbot python3-certbot-nginx -y

    >获取并自动配置证书

    sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

    2. 商业SSL证书

    如果从商业CA购买了证书,您将收到以下文件:

  • 证书文件(通常为.crt或.pem扩展名)
  • 私钥文件(通常为.key扩展名)
  • 中间证书链文件(可选)
  • >第二步:上传证书文件到服务器

    将证书文件上传到服务器的合适位置,建议使用以下目录结构:

    >

    创建证书存放目录

    sudo mkdir -p /etc/nginx/ssl/yourdomain.com
    sudo chmod 700 /etc/nginx/ssl/yourdomain.com

    >将证书文件复制到该目录

    sudo cp yourdomain.crt /etc/nginx/ssl/yourdomain.com/
    sudo cp yourdomain.key /etc/nginx/ssl/yourdomain.com/
    sudo cp chain.crt /etc/nginx/ssl/yourdomain.com/

    第三步:配置Nginx使用SSL证书

    编辑Nginx配置文件,通常位于 /etc/nginx/conf.d//etc/nginx/sites-available/ 目录:

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

    # SSL证书配置
    ssl_certificate /etc/nginx/ssl/yourdomain.com/yourdomain.crt;
    ssl_certificate_key /etc/nginx/ssl/yourdomain.com/yourdomain.key;

    # 如果需要中间证书链
    ssl_trusted_certificate /etc/nginx/ssl/yourdomain.com/chain.crt;

    # SSL安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # 其他配置...
    root /var/www/yourdomain.com;
    index index.html index.php;

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

    >HTTP到HTTPS重定向

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

    第四步:测试Nginx配置

    在重启Nginx之前,务必测试配置文件是否有语法错误:

    >

    测试Nginx配置

    sudo nginx -t

    >如果显示"syntax is ok"和"test is successful",则可以继续

    第五步:重启Nginx服务

    配置测试通过后,重启Nginx使配置生效:

    >

    对于CentOS 7/8

    sudo systemctl restart nginx

    >或者使用reload(不中断现有连接)

    sudo systemctl reload nginx

    第六步:验证SSL证书安装

    使用以下方法验证证书是否正确安装:

    1. 浏览器验证:访问 https://yourdomain.com,查看地址栏是否显示锁形图标

    2. 在线工具验证:使用SSL Labs测试工具(https://www.ssllabs.com/ssltest/)

    3. 命令行验证

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

    常见问题排查

    >问题1:Nginx启动失败

    原因:证书文件路径不正确或权限不足

    解决方法

    检查证书文件权限

    sudo chmod 600 /etc/nginx/ssl/yourdomain.com/*
    sudo chown nginx:nginx /etc/nginx/ssl/yourdomain.com/*

    >确认证书文件格式正确

    openssl x509 -in /etc/nginx/ssl/yourdomain.com/yourdomain.crt -text -noout

    问题2:浏览器显示证书不受信任

    原因:缺少中间证书链或使用了自签名证书

    解决方法:确保已将中间证书链正确配置在 ssl_trusted_certificate 指令中

    >问题3:混合内容警告

    原因:网页中包含HTTP资源

    解决方法:将网页中的所有资源链接改为HTTPS协议,或使用相对协议(//)引用

    >SSL证书自动续期

    对于Let's Encrypt证书,可以设置自动续期:

    >

    测试自动续期

    sudo certbot renew --dry-run

    >添加定时任务(crontab)

    sudo crontab -e

    添加以下行(每12小时检查一次)

    0 */12 * * * /usr/bin/certbot renew --quiet

    安全最佳实践

    1. 启用HTTP严格传输安全(HSTS)

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


    2. 禁用不安全的SSL/TLS版本

    ssl_protocols TLSv1.2 TLSv1.3;


    3. 使用强大的加密套件

    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';


    4. 启用OCSP装订

    ssl_stapling on;
    ssl_stapling_verify on;

    性能优化建议

    1. 启用SSL会话缓存

    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;


    2. 使用TLS 1.3:提供更快的握手速度和更好的安全性

    3. 启用OCSP Stapling:减少客户端验证证书的时间

    >结论

    在CentOS系统上为Nginx配置SSL证书是提升网站安全性的重要步骤。通过本文的详细步骤,您可以顺利完成证书的安装和配置。记得定期检查证书有效期,并确保配置了合适的安全策略。随着网络威胁的不断演变,保持SSL配置的安全性和现代性是每个网站管理员的责任。

    >参考资料

  • Nginx官方SSL配置文档
  • Let's Encrypt官方文档
  • Mozilla SSL配置生成器
  • OpenSSL官方手册

---

*本文更新于2026年,适用于主流Linux发行版和Nginx稳定版本。实际操作中请根据您的具体环境进行适当调整。*

发表回复

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