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