У меня есть CI/CD установки приложения Джанго через Bitbucket на AWS EC2 через AWS CodeDeploy.
В хуках 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.
Чтобы снова включить SSL, мне нужно вручную запустить
sudo certbot --nginx
И перенастройте SSL-сертификат.
В чем может быть проблема не работы SSL
и как это автоматизировать?
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
, чтобы получить новый сертификат.