Конфигурация Haproxy ssl - установка корневого и промежуточного сертификата
После долгих поисковых запросов, я, наконец, сделал работу с haproxy ssl. Но теперь у меня проблема, потому что root и промежуточный сертификат не установлены, поэтому у моего ssl нет зеленой полосы.
Моя конфигурация haproxy
global
maxconn 4096
nbproc 1
#debug
daemon
log 127.0.0.1 local0
defaults
mode http
option httplog
log global
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend unsecured
bind 192.168.0.1:80
timeout client 86400000
reqadd X-Forwarded-Proto:\ http
default_backend www_backend
frontend secured
mode http
bind 192.168.0.1:443 ssl crt /etc/haproxy/cert.pem
reqadd X-Forwarded-Proto:\ https
default_backend www_backend
backend www_backend
mode http
balance roundrobin
#cookie SERVERID insert indirect nocache
#option forwardfor
server server1 192.168.0.2:80 weight 1 maxconn 1024 check
server server2 192.168.0.2:80 weight 1 maxconn 1024 check
192.168.0.1 - это мой баланс нагрузки ip./etc/haproxy/cert.pem содержат закрытый ключ и сертификат домена, например. www.domain.com
Существует другой вопрос с конфигурацией ssl, в которую входит bundle.crt. Когда я связался с моей поддержкой ssl, они сказали мне, что мне нужно установить корневой и промежуточный сертификат.
Из Документация Comodo, создание пакета просто, как слияние их crt, которые я сделал.
Но когда я пытаюсь переконфигурировать конфигурацию haproxy как
bind 192.168.0.1:443 ssl crt /etc/haproxy/cert.pem ca-file /path/to/bundle.crt
Я получаю ошибку, которую я не могу использовать для этого параметра конфигурации при связывании.
p.s im с использованием версии 1.5 dev12. С последней версией dev17 у меня были проблемы даже с запуском haproxy как на этом сообщении
![enter image description here]()
Ответы
Ответ 1
Похоже, вам нужно перекомпилировать так:
make clean
make \
TARGET="linux26" \
USE_STATIC_PCRE=1 \
USE_OPENSSL=1
make install PREFIX="/opt/haproxy"
После этого bind
должен распознать ваш параметр crt.
В моем случае я использовал:
bind 0.0.0.0:443 ssl crt /envs/production/ssl/haproxy.pem
Я объединил все файлы ssl в один большой файл в цепочке сертификатов заказа, закрытый ключ. например:.
-----BEGIN MY CERTIFICATE-----
-----END MY CERTIFICATE-----
-----BEGIN INTERMEDIATE CERTIFICATE-----
-----END INTERMEDIATE CERTIFICATE-----
-----BEGIN INTERMEDIATE CERTIFICATE-----
-----END INTERMEDIATE CERTIFICATE-----
-----BEGIN ROOT CERTIFICATE-----
-----END ROOT CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
Перезагрузите и проверьте с помощью openssl s_client -connect 127.0.0.1:443 -servername www.transloadit.com |head
.
Он должен вернуть правильную информацию сертификата.
Изменить: я только что нашел этот учебник с помощью HackerNews: https://serversforhackers.com/c/using-ssl-certificates-with-haproxy. Подумал, что было бы полезно добавить, поскольку он идет более подробно.
Ответ 2
Извините, я не знаю, какая версия haproxy доступна в опции USE_OPENSSL... Я не могу найти эту опцию в моей кодовой базе V 1.4.24
Valid USE_* options are the following. Most of them are automatically set by
# the TARGET, others have to be explictly specified :
# USE_CTTPROXY : enable CTTPROXY on Linux (needs kernel patch).
# USE_DLMALLOC : enable use of dlmalloc (see DLMALLOC_SRC) patch).
# USE_EPOLL : enable epoll() on Linux 2.6. Automatic. patch).
# USE_GETSOCKNAME : enable getsockname() on Linux 2.2. Automatic. patch).
# USE_KQUEUE : enable kqueue() on BSD. Automatic. patch).
# USE_MY_EPOLL : redefine epoll_* syscalls. Automatic. patch).
# USE_NETFILTER : enable netfilter on Linux. Automatic.patch).
# USE_PCRE : enable use of libpcre for regex. Recommended.patch).
# USE_POLL : enable poll(). Automatic.patch).
# USE_REGPARM : enable regparm optimization. Recommended on x86.patch).
# USE_SEPOLL : enable speculative epoll(). Automatic.patch).
# USE_STATIC_PCRE : enable static libpcre. Recommended.patch).
# USE_TPROXY : enable transparent proxy. Automatic. patch).
# USE_LINUX_TPROXY : enable full transparent proxy. Automatic. patch).
# USE_LINUX_SPLICE : enable kernel 2.6 splicing. Automatic. patch).
# USE_LIBCRYPT : enable crypted passwords using -lcrypt patch).
# USE_CRYPT_H : set it if your system requires including crypt.h