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
Ну и в конце протестируем наши настройки, зайдя на свой веб-сайт из веб-браузера, и убедитесь, что сертификат загружается нормально, а браузер указывает, что вы зашли на сайт, используя безопасное соединение.
Вот и все! Сертификаты установлены.
Заключение.
Вот и добавилось в копилку навыков еще одно умение. Надеюсь кому-то пригодится. А если Вам нравится мой сайт, и то что я делаю, то можете поддержать этот проект, собирающий в себя статьи и руководства по IT технологиям. Это можно сделать нажав, кнопочку ниже.
Was this helpful?
0 / 0