HAProxy – это широко используемый, надежный, высокопроизводительный обратный прокси-сервер, который обеспечивает высокую доступность и возможность балансировки нагрузки для TCP и HTTP приложений.
По умолчанию он скомпилирован с OpenSSL, таким образом, поддерживая завершение SSL, позволяя вашему сайту/стеку приложений шифровать и расшифровывать трафик между вашим “сервером веб-входа” или сервером шлюза доступа приложений и клиентскими приложениями.
Это руководство покажет, как настроить сертификат CA SSL в HAPorxy.
Это руководство предполагает, что вы уже получили сертификат от УЦ (CA) и готовы установить и настроить его на сервере HAProxy.
Такими файлами являются:
- Сам сертификат.
- Промежуточные сертификаты, также называемые пучками или цепочками, и.
- Корневой CA, если имеется, и Закрытый ключ.
Создание файла SSL-сертификата в формате PEM
Прежде чем настраивать сертификат СФ на HAProxy, необходимо понять, что HAProxy требует один файл .pem, который должен содержать содержимое всех вышеперечисленных файлов, скомпонованных в следующем порядке:
- Закрытый ключ, который заканчивается .key, (может находиться в начале или в конце файла).
- Затем SSL-сертификат (обычно заканчивается .crt).
- Затем CA-Bundle (обычно заканчивается .ca-bundle), и
- Корневой УЦ, если таковой имеется.
Чтобы создать файл .pem, перейдите в каталог, в котором находятся файлы сертификатов, например ~/Downloads, затем выполните команду cat следующим образом (замените имена файлов соответствующим образом):
$ cat example.com.key STAR_example_com/STAR_example_com.crt STAR_example_com/STAR_example_com.ca-bundle > example.com.pem
Настройка PEM SSL сертификата на HAProxy
Затем загрузите только что созданный файл сертификата .pem на сервер HAProxy с помощью команды scp, как показано далее (замените sysadmin и 192.168.10.24 на имя пользователя и IP-адрес удаленного сервера)
$ scp example.com.pem sysadmin@192.168.10.24:/home/sysadmin/
Затем создайте каталог, в котором будет храниться файл сертификата .pem, с помощью команды mkdir и скопируйте в него файл:
$ sudo mkdir -p /etc/ssl/example.com/ $ sudo cp example.com.pem /etc/ssl/example.com/
Затем откройте конфигурационный файл HAProxy и настройте сертификат в разделе frontend listener, используя параметры ssl и crt: первый разрешает SSL, а второй указывает расположение файла сертификата.
frontend http_frontend mode http bind *:80 bind *:443 ssl crt /etc/ssl/example.com/example.com.pem alpn h2,http/1.1 redirect scheme https code 301 if !{ ssl_fc } default_backend http_servers
Некоторые версии SSL/TLS сейчас не рекомендуется использовать из-за обнаруженных в них уязвимостей.
10 онлайн инструментов для тестирования SSL, TLS и последних уязвимостей
Чтобы ограничить поддерживаемую версию SSL, можно добавить параметр ssl-min-ver следующим образом:
bind *:443 ssl crt /etc/ssl/example.com/example.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 } или http-request redirect scheme https unless { ssl_fc }
Теперь ваш раздел frontend должен выглядеть так, как показано в этом примере конфигурации:
frontend http_frontend mode http bind *:80 bind *:443 ssl crt /etc/ssl/example.com/example.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 10.2.1.55:80
Сохраните файл конфигурации и закройте его.
Затем проверьте правильность его синтаксиса с помощью следующей команды:
$ sudo haproxy -f /etc/haproxy/haproxy.cfg -c
Если файл конфигурации нормальный, выполните перезагрузку службы haproxy, чтобы учесть последние изменения в конфигурации, используя команду systemctl:
$ sudo systemctl reload haproxy
И последнее, но не менее важное: протестируйте всю установку, зайдя на свой сайт через веб-браузер и убедившись, что сертификат загружается нормально и браузер показывает, что “Соединение безопасно”!
Мы надеемся, что это руководство помогло вам настроить SSL сертификат в программном обеспечении балансировщика нагрузки HAProxy.
Если вы столкнулись с какими-либо ошибками, сообщите нам об этом через форму обратной связи ниже.
Мы будем рады помочь вам.
см. также:
- ⏳ Настройка балансировщика нагрузки HAProxy с SSL в Ubuntu 18.04 / Debian 10/9
- ✔️ Как управлять серверами HAProxy из веб-интерфейса
- HAproxy на CentOS & Red Hat
- 🔐 Как установить OpenSSH на операционную систему DietPi
- ⚙️ Список инструментов безопасности с открытым исходным кодом
- ☸️ Учебное пособие по Ingress для начинающих в Kubernetes
- Как локально проверить SSL-сертификат