Nginx的SSL通配符证书自动续期

在 CentOS 系统中使用 Certbot 自动申请和续期 SSL 证书的步骤如下,以 Nginx 为例(Apache 步骤类似,只需替换对应插件):

一、安装 Certbot 及依赖

CentOS 系统需先启用 EPEL 仓库(提供 Certbot 包),再安装相关组件:

# 1. 安装 EPEL 仓库(CentOS 7/8 通用)
sudo yum install -y epel-release

# 2. 安装 Certbot 及 Nginx 插件
# CentOS 7
sudo yum install -y certbot python2-certbot-nginx

# CentOS 8(Python 3 版本)
sudo dnf install -y certbot python3-certbot-nginx

二、申请证书并自动配置 Nginx

根据证书类型(单域名/通配符)选择对应命令:

1. 单域名/多域名证书(HTTP 验证,简单快捷)

适用于普通域名(如 example.comwww.example.com),通过 HTTP 方式验证域名所有权:

sudo certbot --nginx -d example.com -d www.example.com
  • 执行后会自动完成:
    • 申请 Let’s Encrypt 证书
    • 修改 Nginx 配置(添加 SSL 配置,替换原有证书路径)
    • 自动启用 HTTPS 并跳转(HTTP → HTTPS)
2. 通配符证书(DNS 验证,支持 *.example.com

适用于需要覆盖所有子域名的场景(如 a.example.comb.example.com),需通过 DNS TXT 记录验证:

sudo certbot --nginx -d example.com -d *.example.com
  • 执行后会提示:
    1. 生成一条 DNS TXT 记录(格式如 _acme-challenge.example.com 对应一串随机值)
    2. 登录你的域名解析平台(如阿里云、Cloudflare 等),添加该 TXT 记录
    3. 等待 DNS 生效(约 5-10 分钟,可通过 nslookup -type=TXT _acme-challenge.example.com 验证)
    4. 按回车继续,完成证书申请和配置

三、验证证书安装

# 查看已安装的证书信息
sudo certbot certificates

输出会显示证书路径(通常在 /etc/letsencrypt/live/example.com/)、有效期等信息。

四、自动续期配置

Let’s Encrypt 证书有效期为 90 天,Certbot 会自动创建定时任务续期:

# 查看自动续期任务(CentOS 7 用 cron,CentOS 8 用 systemd-timer)
# CentOS 7
sudo crontab -l | grep certbot

# CentOS 8
sudo systemctl list-timers | grep certbot
手动测试续期(推荐首次使用时验证):
# 模拟续期(不实际修改证书)
sudo certbot renew --dry-run

# 若测试通过,实际续期命令(正常情况下无需手动执行,定时任务会自动运行)
sudo certbot renew

# 续期后重载 Nginx 使新证书生效(定时任务会自动处理)
sudo systemctl reload nginx

五、关键说明

  1. 自动替换 Nginx 配置
    使用 --nginx 插件时,Certbot 会自动修改 Nginx 配置文件(通常在 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/),更新 ssl_certificate 和 ssl_certificate_key 路径,覆盖原有证书配置。

  2. 卸载证书
    若需删除证书并恢复配置:

    sudo certbot delete --cert-name example.com
    
  3. 防火墙配置
    确保 443 端口(HTTPS)已开放:

    # CentOS 7
    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload
    
    # CentOS 8
    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload
    

通过以上步骤,即可在 CentOS 系统中使用 Certbot 免费、自动地管理 SSL 证书,包括申请、续期和配置 Nginx。

### 如何在Nginx中部署通配符证书 #### 准备工作 为了能够在Nginx中成功部署通配符SSL/TLS证书,需先获取该类型的证书。通常这可以通过Let's Encrypt这样的免费服务提供商获得,使用`acme.sh`作为客户端工具可以简化这一过程[^1]。 对于通过DNS挑战方式申请通配符证书而言,确保域名的DNS解析正常运作至关重要;另外还需设置好相应的API访问权限以便于自动化验证流程能够顺利执行。一旦准备就绪,则可通过命令行指令借助`acme.sh`完成证书签发请求并下载所需的`.pem`格式私钥与公钥文件。 #### 修改Nginx配置以支持HTTPS协议下的通配符证书 编辑Nginx站点配置文件,在server区块内加入如下所示参数: ```nginx server { listen 443 ssl; server_name *.example.com; ssl_certificate /path/to/your/fullchain.pem; ssl_certificate_key /path/to/your/private.key; # SSL安全强化建议配置项 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'; } ``` 上述代码片段展示了如何指定路径指向之前所提到过的由ACME颁发机构返回给用户的两个重要文件——fullchain.pem(即包含中间CA在内的整个链条) 和 private.key (账户专属密钥)。同时启用了更高级别的传输层安全性(TLS),以及选择了更为严格的加密算法集来保障通信的安全性[^2]。 #### 自动续期机制集成至Nginx环境之中 为了让Nginx始终维持有效的TLS连接状态而不会因为证书过期而导致服务中断现象发生,应该考虑建立一套定期检查现有凭证有效期长短的任务计划,并配合脚本实现无缝切换新旧版本之间的平滑过渡操作。例如利用cron定时器加上简单的bash shell script即可达成目的: ```shell #!/bin/bash # 定义变量存储证书位置 CERT_PATH="/etc/nginx/certs" DOMAIN="*.example.com" # 更新证书逻辑... if ! acme.sh --dns dns_cf ;then echo "Failed to renew certificate!" else systemctl reload nginx fi ``` 此段Shell脚本实现了当检测到即将到期时尝试重新发放新的有效期内的通配符证书实例的功能,并且如果一切顺利的话还会向Nginx发送信号通知其重载最新的配置变更从而立即生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lytcreate.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值