SSL для приложения SaaS - PullRequest
       17

SSL для приложения SaaS

0 голосов
/ 10 января 2020

Как я могу использовать Зашифровать менеджер сертификатов с помощью Ha-proxy loadbalancer? Мне нужно реализовать службу пользовательских доменных функций в моем приложении SaaS. Все работает нормально, кроме SSL. Как я могу реализовать? Использование Haproxy в качестве Loadbalancer.

Ответы [ 2 ]

0 голосов
/ 11 января 2020

попытался определить шаги. Уменьшенный от более крупного скрипта, если у вас есть ошибка, пожалуйста, напишите здесь, чтобы исправить это.

Необходимые условия:

  1. Установлен haproxy, например здесь: ip is 200.200.200.200
  2. домен dns зарегистрирован и направлен на haproxy, например, здесь: test.com
  3. http работает, если это работает, тогда вся сеть работает
  4. с установленным letsencrypt и с учетная запись
  5. возможно остановить haproxy и отключить сайт

Шаги:

  1. очистить старые папки в / etc / letsencrypt, которые с test.com rm -rf *test.com*

  2. stop haproxy

  3. команда запуска:

    certbot certonly --standalone --preferred-challenges http --http-01-port 80 -d test.com

    certbot certonly --standalone --preferred-challenges http --http-01-port 80 -d www.test.com

  4. проверьте, все ли в порядке

    root@200.200.200.200:/etc/letsencrypt/renewal# cat www.test.com.conf

должно быть:

#renew_before_expiry = 30 days
version = 0.22.2
archive_dir = /etc/letsencrypt/archive/www.test.com
cert = /etc/letsencrypt/live/www.test.com/cert.pem
privkey = /etc/letsencrypt/live/www.test.com/privkey.pem
chain = /etc/letsencrypt/live/www.test.com/chain.pem
fullchain = /etc/letsencrypt/live/www.test.com/fullchain.pem

# Options used in the renewal process
[renewalparams]
http01_port = 80
installer = None
pref_challs = http-01,
account = YOUR_ACCOUNT
authenticator = standalone

создать папки / etc / letsencrypt / live / www.test.com и т.д. / letsencrypt / live / test.com

создать файлы ссылок на архивные файлы

ln -s ../../archive/test.com/cert1.pem cert.pem
ln -s ../../archive/test.com/chain1.pem chain.pem
ln -s ../../archive/test.com/fullchain1.pem fullchain.pem
ln -s ../../archive/test.com/privkey1.pem privatekey.pem
скопировать сертификат в haproxy cat fullchain.pem privatekey.pem > /etc/haproxy/ssl/test.com-fullchain.pem

то же самое для www*1069*

добавить в haproxy внешний интерфейс ssl
frontend test_com_ssl
  bind *:443 ssl crt /etc/haproxy/ssl/ ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

  default_backend test_com

внутренний интерфейс может быть таким же, как для внешнего интерфейса http

перезапустите haproxy, проверьте, активен ли сертификат

Чтобы проверить, чтобы увидеть дату истечения срока действия сертификата: Введите

openssl x509 -enddate -noout -in test.com-fullchain.pem

TO : Не рассказано, как обновить скрипт, надеюсь сделать это в будущем

0 голосов
/ 11 января 2020

Вот возможное решение. Чем проще на мой взгляд. Он использует Haproxy Community и клиент Certbot.

  1. Установите клиент Certbot на отдельном сервере и разработайте REST API для взаимодействия с клиентом. Здесь вы сможете интегрировать свое приложение с Certbot для генерации сертификатов.

  2. Создайте каталог на сервере HAproxy для хранения сертификатов. Установите NFS на сервере и смонтируйте этот каталог на сервере Certbot. При создании сертификатов с помощью Certbot разверните эту точку монтирования.

  3. Создайте сценарий развертывания для Certbot, чтобы он перезагружал службу Haproxy при развертывании нового сертификата.

  4. Запланируйте задачу на сервере Certbot, чтобы он запускал процесс обновления один раз в день.

Если вам не нравится клиент Certbot, вы можете разработать клиент самостоятельно. Я сейчас разрабатываю один в Scala для интеграции с моей платформой электронной коммерции, это не так сложно.

...