温馨提示×

Ubuntu Nginx SSL证书更新方法

小樊
37
2025-11-09 09:15:00
栏目: 云计算

Ubuntu Nginx SSL证书更新(以Let’s Encrypt为例)

一、自动续期(推荐方式)

Let’s Encrypt证书有效期为90天,Certbot会自动配置定时任务处理续期,无需手动干预。若需验证自动续期是否正常,可执行以下命令模拟续期流程:

sudo certbot renew --dry-run

若输出显示“Congratulations, all renewals succeeded”则表示自动续期配置成功。

二、手动更新证书

若需强制更新证书(如域名变更、证书丢失等),可通过以下步骤操作:

1. 使用Certbot重新获取证书

运行Certbot命令并指定域名,Certbot会自动验证域名所有权并生成新证书:

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

命令执行后,Certbot会提示是否自动配置Nginx,选择“Yes”即可。

2. 检查证书文件

新证书会保存在/etc/letsencrypt/live/yourdomain.com/目录下,主要文件说明:

  • fullchain.pem:完整的证书链(包含中间证书和根证书)
  • privkey.pem:私钥文件(需严格保密)

3. 更新Nginx配置

若Certbot未自动更新Nginx配置,需手动修改对应站点的配置文件(通常位于/etc/nginx/sites-available/yourdomain.com),确保以下指令指向新证书路径:

server {
    listen 443 ssl;
    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配置(如协议版本、加密套件)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
}

4. 测试并重载Nginx

修改配置后,需先测试语法是否正确,再重载Nginx使更改生效:

sudo nginx -t  # 测试配置语法
sudo systemctl reload nginx  # 重载Nginx(不中断现有连接)

三、注意事项

  • 备份旧证书:更新前建议备份旧证书和Nginx配置,防止误操作导致服务中断:
    sudo cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /etc/letsencrypt/live/yourdomain.com/fullchain.pem.bak
    sudo cp /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-available/yourdomain.com.bak
    
  • 自动续期优化:Certbot默认会创建定时任务(通常位于/etc/cron.d/certbot),每周检查证书有效期并在到期前30天尝试续期。若需调整检查频率,可编辑该文件或通过crontab -e添加自定义任务(如每天检查):
    0 0 * * * /usr/bin/certbot renew --quiet && systemctl reload nginx
    
  • 防火墙设置:确保服务器防火墙允许443端口流量(HTTPS),避免证书更新后无法访问:
    sudo ufw allow 'Nginx Full'  # 允许HTTP和HTTPS流量
    sudo ufw enable  # 启用防火墙(若未启用)
    

通过以上步骤,可完成Ubuntu Nginx SSL证书的更新操作,确保网站始终保持有效的HTTPS加密连接。

0