certbot SSL certifact 停止处理 nginx 配置更新

certbot SSL certifact stops working on nginx configuration update

我有一个 Django 应用程序设置 CI/CD 通过 AWS EC2 上的 Bitbucket 通过 AWS CodeDeploy。

AfterInstall

下的 AWS CodeDeploy 挂钩中
hooks:
  AfterInstall:
    - location: scripts/ngnix.sh
      timeout: 6000
      runas: ubuntu

并且nginx.sh脚本是

#!/usr/bin/env bash

mkdir -p /etc/nginx/sites-enabled
mkdir -p /etc/nginx/sites-available
sudo mkdir -p /etc/nginx/log/
sudo unlink /etc/nginx/sites-enabled/*
sudo cp /path_to_app/configs/nginx.conf /etc/nginx/sites-available/app-host.conf
sudo ln -s /etc/nginx/sites-available/app-host.conf /etc/nginx/sites-enabled/app-host.conf
sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx start
sudo /etc/init.d/nginx status

但每次此脚本通过 CI/CD 管道 运行 时,SSL 停止工作并且无法使用 https.[=14= 访问该网站]

要重新启用 SSL,我必须手动 运行

sudo certbot --nginx

并重新配置 SSL 证书。

SSL 不工作可能是什么问题以及如何自动执行此操作?

certbot 从 Lets Encrypt 获取 ssl 证书并将这些证书保存在您的计算机上。您可以 运行 命令 sudo certbot certificates 查看证书路径。

Found the following certs:
  Certificate Name: example.com
    Domains: example.com, www.example.com
    Expiry Date: 2017-02-19 19:53:00+00:00 (VALID: 30 days)
    Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem

您需要将位于 Certificate PathPrivate Key Path 的文件存储在持久卷中,这样它们就不会在您每次部署应用程序时都被清除。在你的情况下,我认为这些证书文件正在被删除,这就是你必须 运行 命令 sudo certbot --nginx 来获取新证书的原因。