Bez popisu

tomishinets.v a5ab66bf34 Уменьшил старт период, интервал и таймаут healthcheck před 5 roky
Dockerfile a5ab66bf34 Уменьшил старт период, интервал и таймаут healthcheck před 5 roky
Jenkinsfile 10c4f428d8 missprint před 5 roky
Jenkinsfile.generate c24ebc17dd missprint před 5 roky
Jenkinsfile.renewal ed9a9b722e missprint před 5 roky
README.md a36a3fb7b5 missprint před 5 roky
default.conf 790f57823b Поправил defalut před 6 roky
err_trap 3a05c8d5e2 Перевод renewal в jenkins. See Redmine 110155 před 5 roky
generate.sh 5a83d63e7f change branch před 5 roky
healthcheck.sh f696bd7112 поправил healthcheck.sh před 5 roky
nginx.repo d881d99c39 Add dockerfile před 6 roky
renewal.sh 6335312e7a debug před 5 roky

README.md

letsencrypt

Основные положения

  • Образ основан на centos:7.5.1804
  • В образе используются скрипты generate.sh и renewal.sh для генерации и обновления сертификатов и ключей
  • Задание в Jenkins iru-generate-ssl-certs

Описание работы

  • Редирект запросов на подтверждение владения доменом обеспечивается настройкой haproxy:

    acl letsencrypt_acl path_beg /.well-known/acme-challenge/
    ...
    use_backend letsencrypt_beg if letsencrypt_acl
    ...
    backend letsencrypt_beg
    mode http
    server      letsencrypt letsencrypt:80 check
    
  • Директория с конфигурационными файлами, сертификатами и ключами скачивается с git и опеределяется в переменной git_dir в исполняемых скриптах

  • Для запуска сервиса используются переменные и secrets:

    SMTP_SERVER - адрес почтового сервера
    JENKINS_MAIL_USER - имя пользователя, от которого отправляются email
    jenkins-mail-pass - пароль пользователя, от которого отправляются email
    RECIPIENT_MAIL_BOX - имя пользователя, которому приходят email
    GIT_USER - имя пользователя, имеющего доступ до git-repo
    provision-pass - пароль пользователя, имеющего доступ до git-repo
    GIT_URL - адрес git-repo
    

Выпуск сертификатов и ключей с помощью Jenkinsfile.generate

  • В параметре domain должны быть указано доменное имя (множественные имена не поддерживаются, так как сильно усложняет логику):

    example.ru
    
  • Рекомендуется за один запуск задания выпускать сертификаты, принадлежащие одной "организации"

  • Как только выполнится задание на выпуск сертификата стригерится githook и будет запущено задание на обновление образа nginx-gost

Обновление сертификатов и ключей

  • Обновление сертификатов и ключей осуществляется с помощью healthcheck. При старте контейнера создается файл, если время создания файла более 24 часов, то healthcheck запускает обновление сертификатов
  • После обновления сертификатов стригерится githook и будет запущено задание на обновление образа nginx-gost

Запуск сервиса

  • Запуск сервиса интегрирован в stackfile по деплою proxy-инфраструктуры.

Автор

В. Томишинец ... tomishinets.v@sdsys.ru