Настройка Haproxy ssl - установка корневого и промежуточного сертификата

После долгих поисков я наконец заставил свой haproxy ssl работать. Но теперь у меня проблема, потому что корневой и промежуточный сертификаты не установлены, поэтому у моего 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.домен.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. я использую версию 1.5 dev12. С последней версией dev17 у меня были проблемы даже с запуском haproxy как в этом посте

введите здесь описание изображения


person Novkovski Stevo Bato    schedule 24.02.2013    source источник
comment
Вам следует отключить SSLv3 с помощью bind 192.168.0.1:443 ssl crt /etc/haproxy/cert.pem ca-file /path/to/bundle.crt no-sslv3   -  person Alexander Farber    schedule 15.12.2016


Ответы (2)


Похоже, вам нужно будет перекомпилировать так:

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 в 1 большой файл в цепочке сертификатов заказа, закрытый ключ. например.:

-----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. Подумал, что было бы полезно добавить, поскольку это становится более подробным.

person kvz    schedule 06.03.2013
comment
я попробую, но не могли бы вы сказать мне мой порядок сертификатов, support.comodo. ком/ - person Novkovski Stevo Bato; 06.03.2013
comment
Нет необходимости отправлять корневой сертификат, так как он либо есть у клиента в своем хранилище доверенных сертификатов, либо ему нельзя доверять. - person Jason Martin; 27.07.2016
comment
@kvz ссылка больше не доступна - person carla; 04.09.2017
comment
@carla спасибо, обновлено serversforhackers.com/c/using-ssl-certificates-with -хапрокси - person kvz; 04.09.2017

Извините, я не уверен, какая версия 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
person vivekv    schedule 27.10.2013
comment
попробуйте версию 1.5+, а не 1.4+. Однако версия 1.5 все еще является версией для разработчиков, но она отлично работает для меня в производстве. - person Novkovski Stevo Bato; 27.10.2013
comment
По состоянию на 19 июня 2014 г. выпущена стабильная версия HAProxy 1.5. - person kvz; 15.07.2014