сертификат certbot SSL перестает работать при обновлении конфигурации nginx - PullRequest
0 голосов
/ 11 июля 2019

У меня есть Django приложение для установки CI / CD через Bitbucket на AWS EC2 через AWS CodeDeploy.

В хуках AWS CodeDeploy в AfterInstall

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 .

Чтобы снова включить SSL, я должен вручную запустить

sudo certbot --nginx

И перенастроить SSL-сертификат.

В чем может быть проблема неработающего SSL и как это автоматизировать?

1 Ответ

1 голос
/ 23 июля 2019

certbot получает сертификаты ssl от Lets Encrypt и сохраняет эти сертификаты на вашем компьютере. Вы можете выполнить команду 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 Path & Private Key Path, в постоянном томе, чтобы они не стирались при каждом развертывании приложения. В вашем случае я думаю, что эти файлы сертификатов стираются, и поэтому вам нужно запустить команду sudo certbot --nginx, чтобы получить новый сертификат.

...