No Description

tomishinets.v 674e97aa46 missprint 5 years ago
Dockerfile 674e97aa46 missprint 5 years ago
Jenkinsfile 10c4f428d8 missprint 5 years ago
Jenkinsfile.generate c24ebc17dd missprint 5 years ago
Jenkinsfile.renewal d34fdcbf9d missprint 5 years ago
README.md a36a3fb7b5 missprint 5 years ago
default.conf 790f57823b Поправил defalut 6 years ago
err_trap 3a05c8d5e2 Перевод renewal в jenkins. See Redmine 110155 5 years ago
generate.sh 5a83d63e7f change branch 5 years ago
healthcheck.sh f696bd7112 поправил healthcheck.sh 5 years ago
nginx.repo d881d99c39 Add dockerfile 6 years ago
renewal.sh 3a05c8d5e2 Перевод renewal в jenkins. See Redmine 110155 5 years ago

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