web-dev-qa-db-fra.com

Configuration SSL Haproxy - Installer le certificat racine et intermédiaire

Après beaucoup de recherches sur Google, j'ai finalement réussi à faire fonctionner mon SSL haproxy. Mais maintenant, j'ai un problème parce que le certificat racine et intermédiaire n'est pas installé, donc mon SSL n'a pas de barre verte.

Ma configuration 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 est mon IP d'équilibrage de charge. /etc/haproxy/cert.pem contient la clé privée et le certificat de domaine, par exemple. www.domain.com

Il y a ne autre question avec la configuration ssl , qui inclut bundle.crt. Lorsque j'ai contacté mon support SSL, ils m'ont dit que je devais installer le certificat racine et intermédiaire.

De Comodo Documentation , créer un bundle est aussi simple que de fusionner leur crt, ce que j'ai fait.

Mais quand j'essaye de reconfigurer ma configuration haproxy comme

bind 192.168.0.1:443 ssl crt /etc/haproxy/cert.pem ca-file /path/to/bundle.crt

Je reçois une erreur que je ne peux pas utiliser ce paramètre de configuration lors de la liaison.

p.s im utilisant la version 1.5 dev12. Avec la dernière version de dev17, j'ai même eu des problèmes pour démarrer haproxy comme sur ce post

enter image description here

17
Novkovski Stevo Bato

Il semble que vous devrez recompiler comme suit:

make clean
make \
    TARGET="linux26" \
    USE_STATIC_PCRE=1 \
    USE_OPENSSL=1
make install PREFIX="/opt/haproxy"

Après cela, bind devrait reconnaître votre option crt. Dans mon cas, j'ai utilisé:

bind 0.0.0.0:443 ssl crt /envs/production/ssl/haproxy.pem

J'ai concaténé tous les fichiers SSL en 1 gros fichier dans la chaîne de certificats de commande, clé privée. par exemple.:

-----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-----

Redémarrez et testez avec openssl s_client -connect 127.0.0.1:443 -servername www.transloadit.com |head.

Il doit renvoyer les informations de certificat correctes.

Edit: Je viens de trouver ce tutoriel via HackerNews: https://serversforhackers.com/c/using-ssl-certificates-with-haproxy . J'ai pensé qu'il serait utile de l'ajouter au fur et à mesure des détails.

38
kvz

Désolé, je ne sais pas quelle version de haproxy est l'option USE_OPENSSL disponible ... Je ne trouve pas que cette option dans ma base de code est 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
0
vivekv