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

引言

在当代互联网环境中,网站安全已成为每个站长和运维人员必须重视的核心问题。SSL/TLS证书不仅能够加密用户与服务器之间的数据传输,还能提升网站在搜索引擎中的排名表现。本文将详细介绍在CentOS系统上为Nginx配置和更新SSL证书的完整流程,帮助您快速实现网站HTTPS化。

一、SSL证书基础知识

1.1 什么是SSL证书

SSL(Secure Sockets Layer)证书是用于在Web服务器和浏览器之间建立加密连接的数字证书。现代SSL证书实际上使用的是TLS(Transport Layer Security)协议,但由于历史原因,人们仍习惯称之为SSL证书。

1.2 证书类型选择

  • 域名验证(DV)证书:仅验证域名所有权,适合个人网站和博客
  • 组织验证(OV)证书:验证企业身份,适合商业网站
  • 扩展验证(EV)证书:最高级别验证,浏览器地址栏显示企业名称
  • 通配符证书:可保护主域名及所有子域名
  • 多域名证书:可同时保护多个不同域名

二、CentOS系统环境准备

2.1 系统要求

  • CentOS 7 或更高版本
  • 已安装Nginx(推荐1.18+版本)
  • 已注册域名并正确解析到服务器IP
  • 防火墙已开放80和443端口

2.2 安装必要工具

# 更新系统软件包
sudo yum update -y

# 安装EPEL源(如果尚未安装)
sudo yum install -y epel-release

# 安装Certbot及Nginx插件
sudo yum install -y certbot python3-certbot-nginx

三、使用Let’s Encrypt免费证书

3.1 为什么选择Let’s Encrypt

Let’s Encrypt是一个免费的、自动化的、开放的证书颁发机构(CA),由Internet Security Research Group(ISRG)运营。它提供:
– 完全免费
– 自动化续期
– 广泛的浏览器信任
– 90天有效期(可自动续期)

3.2 获取SSL证书

执行以下命令为您的域名获取SSL证书:

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

证书生成过程中,Certbot会自动:
1. 验证您对域名的所有权
2. 获取证书文件
3. 自动修改Nginx配置文件
4. 重新加载Nginx使配置生效

3.3 证书文件位置

成功获取证书后,文件将保存在:
– 证书路径:/etc/letsencrypt/live/yourdomain.com/fullchain.pem
– 私钥路径:/etc/letsencrypt/live/yourdomain.com/privkey.pem

四、手动配置Nginx SSL

如果您选择不使用Certbot自动配置功能,可以手动编辑Nginx配置文件:

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

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

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

    # 其他配置...
}

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

五、SSL证书自动续期

5.1 测试自动续期

Let’s Encrypt证书有效期为90天,建议设置自动续期任务:

# 测试续期功能是否正常
sudo certbot renew --dry-run

5.2 配置Cron定时任务

创建自动续期计划任务:

# 编辑crontab
sudo crontab -e

# 添加以下行(每天凌晨2点尝试续期)
0 2 * * * /usr/bin/certbot renew --quiet

5.3 手动更新证书

当需要立即更新证书时,执行:

sudo certbot renew

六、常见问题排查

6.1 证书更新失败

问题原因
– 域名解析错误
– 防火墙阻止80端口
– Nginx配置语法错误

解决方案

# 检查Nginx配置
sudo nginx -t

# 查看Certbot日志
sudo tail -f /var/log/letsencrypt/letsencrypt.log

# 暂时关闭防火墙测试
sudo systemctl stop firewalld

6.2 混合内容警告

问题现象:浏览器显示”部分安全”警告

解决方法
– 将网页中的所有HTTP资源链接改为HTTPS
– 使用相对路径或协议相对URL
– 在Nginx中添加Content-Security-Policy头

6.3 证书链不完整

问题现象:部分移动设备显示证书不可信

解决方案
确保使用fullchain.pem而不是cert.pem,前者包含完整的证书链。

七、SSL安全优化建议

7.1 启用HSTS

在Nginx配置中添加:

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

7.2 配置安全的加密套件

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

7.3 启用OCSP Stapling

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;

八、总结

在CentOS系统上为Nginx配置SSL证书是提升网站安全性和可信度的重要步骤。通过本文的介绍,您应该能够:
1. 理解SSL证书的基本原理和类型
2. 使用Let’s Encrypt免费获取SSL证书
3. 正确配置Nginx支持HTTPS
4. 设置证书自动续期避免过期
5. 排查常见的SSL配置问题

建议定期检查证书有效期,并关注SSL/TLS协议的最新发展,及时更新配置以确保网站始终处于安全的状态。


相关资源
– Let’s Encrypt官方网站:https://letsencrypt.org
– Certbot官方文档:https://certbot.eff.org
– Mozilla SSL配置生成器:https://ssl-config.mozilla.org

发表回复

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