Как настроить сертификат CA SSL в HAProxy

HAProxy — это широко используемый, надежный и высокопроизводительный обратный прокси-сервер, который обеспечивает высокую доступность и возможности балансировки нагрузки для приложений TCP и HTTP. По умолчанию он скомпилирован с OpenSSL, который поддерживает SSL, позволяя вашему веб-сайту/приложению шифровать и расшифровывать трафик между вашим «входом на веб-сервер» или доступом к приложениям и клиентскими приложениями.
В этом руководстве показано, как настроить сертификат CA SSL в HAPorxy. Я предполагаю, что вы уже получили сертификат от CA и готовы установить и настроить его на сервере HAProxy.
Итак, прежде, чем начать у Вас должно быть следующее:

  • Собственно сам сертификат.
  • Промежуточные сертификаты также называются пакетами или цепочками.
  • Корневой CA, если таковой имеется.
  • Закрытый ключ.

Создаем файл SSL-сертификата в формате PEM.

Прежде чем настраивать сертификат CA в HAProxy, вы должны понимать, что для HAProxy требуется один файл .pem, который должен включать в себя содержимое всех вышеуказанных файлов в следующем порядке:

  • Закрытый ключ, который заканчивается на .key, (может находиться в начале или в конце файла).
  • За ним следует SSL-сертификат (обычно заканчивается на .crt).
  • Затем CA-Bundle(обычно заканчивается на .ca-bundle).
  • Корневой CA, если таковой имеется.

Чтобы создать файл .pem, перейдите в каталог, в котором хранятся ваши файлы сертификатов, например /Downloads, затем выполните команду cat следующим образом (заменив имена файлов на ваши):

user@computer$ cat yoursite.com.key STAR_yoursite_com/STAR_yoursite_com.crt STAR_yoursite_com/STAR_yoursite_com.ca-bundle > yoursite.com.pem

Настраиваем SSL-сертификат PEM в HAProxy.

После создания файла SSL-сертификата в формате PEM, его необходимо загрузить на сервер HAProxy, используя команду scp, как показано ниже (Не забудьте поменять имя и IP на свои).:

user@computer$ scp yoursite.com.pem user@XXX.XXX.XXX.XXX:/home/sysadmin/

Затем создаем каталог, в котором будет храниться файл сертификата .pem, используя команду mkdir, и скопируйте в него файл:

user@computer$ sudo mkdir -p /etc/ssl/yoursite.com/
user@computer$ sudo cp yoursite.com.pem /etc/ssl/yoursite.com/

Затем откройте файл конфигурации HAProxy и настройте сертификат в разделе frontend listener, используя параметры ssl и crt: первый разрешает завершение SSL, а второй указывает местоположение файла сертификата.

frontend http_frontend
      mode http
      bind *:80
      bind *:443 ssl crt  /etc/ssl/yoursite.com/yoursite.com.pem alpn h2,http/1.1
     redirect scheme https code 301 if !{ ssl_fc }
      default_backend http_servers

Некоторые версии SSL / TLS сейчас не рекомендуются для использования из-за обнаруженных в них уязвимостей. Чтобы ограничить поддерживаемую версию SSL, вы можете добавить параметр ssl-min-ver следующим образом:

bind *:443 ssl crt  /etc/ssl/yoursite.com/yoursite.com.pem alpn h2,http/1.1   ssl-min-ver TLSv1.2

Настраиваем HAProxy для перенаправления HTTP на HTTPS.

Чтобы убедиться, что ваш веб-сайт доступен только по протоколу HTTPS, вам необходимо разрешить HAProxy перенаправлять весь HTTP-трафик на HTTPS в случае, если пользователь попытается получить к нему доступ через HTTP (порт 80).

Добавляем следующую строку к приведенной выше конфигурации:

redirect scheme https code 301 if !{ ssl_fc }
OR
http-request redirect scheme https unless { ssl_fc }

Теперь ваш frontend section должен выглядеть следующим образом:

frontend http_frontend
      mode http
      bind *:80
      bind *:443 ssl crt  /etc/ssl/yoursite.com/yoursite.com.pem alpn h2,http/1.1  ssl-min-ver TLSv1.2
      redirect scheme https code 301 if !{ ssl_fc }
      default_backend   http_servers

backend http_servers
      mode http
      balance roundrobin
      option httpchk HEAD /
      http-response set-header X-Frame-Options SAMEORIGIN
      http-response set-header X-XSS-Protection 1;mode=block
      http-response set-header X-Content-Type-Options nosniff
      default-server check maxconn 5000
      server http_server1 xxx.xxx.xxx.xxx:80

Сохраните файл конфигурации и закройте его. Затем проверяем правильность его синтаксиса, используя следующую команду:

user@computer$ sudo haproxy -f /etc/haproxy/haproxy.cfg -c

Если все хорошо, на экране вы должны увидеть следующее сообщение:

Configuration file is valid

Если файл конфигурации действителен, перезагружаем службу haproxy, чтобы перечитать изменения в конфигурации, используя команду systemctl:

user@computer$ sudo systemctl reload haproxy

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

SSL

Вот и все! Сертификаты установлены.

Заключение.

Вот и добавилось в копилку навыков еще одно умение. Надеюсь кому-то пригодится. А если Вам  нравится мой сайт, и то что я делаю, то можете поддержать этот проект, собирающий в себя статьи и руководства по IT технологиям. Это можно сделать нажав, кнопочку ниже.

Was this helpful?

0 / 0

Добавить комментарий 0