http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#ssl-default-bind-ciphers

This states the following:

There are cases where it is desirable to support multiple key types, e.g.
RSA
and ECDSA in the cipher suites offered to the clients. This allows clients
that support EC certificates to be able to use EC ciphers, while
simultaneously supporting older, RSA only clients.

In order to provide this functionality, multiple PEM files, each with a
different key type, are required. To associate these PEM files into a
“cert bundle” that is recognized by haproxy, they must be named in the
following way: All PEM files that are to be bundled must have the same base
name, with a suffix indicating the key type. Currently, three suffixes are
supported: rsa, dsa and ecdsa. For example, if http://www.example.com has
two PEM
files, an RSA file and an ECDSA file, they must be named: “example.pem.rsa”
and “example.pem.ecdsa”. The first part of the filename is arbitrary; only
the
suffix matters. To load this bundle into haproxy, specify the base name
only:
Example :
bind :8443 ssl crt example.pem
Note that the suffix is not given to haproxy; this tells haproxy to look for
a cert bundle.

Haproxy will load all PEM files in the bundle at the same time to try to
support multiple key types. PEM files are combined based on Common Name
(CN) and Subject Alternative Name (SAN) to support SNI lookups. This means
that even if you give haproxy a cert bundle, if there are no shared CN/SAN
entries in the certificates in that bundle, haproxy will not be able to
provide multi-cert support.

I tried exactly per instructions, and haproxy will not bundle them at
runtime:

$ sudo haproxy -v
HA-Proxy version 1.7-dev4-41d5e3a 2016/08/14
Copyright 2000-2016 Willy Tarreau

I have example.pem.rsa and example.pem.ecdsa in the same directory and both
are valid certs.

I use example.pem in the config as instructed:

Here is the error:

$ sudo haproxy -f /etc/haproxy/haproxy.cfg
[ALERT] 232/013138 (32073) : parsing [/etc/haproxy/haproxy.cfg:54] : ‘bind
x.x.x.x:443’ : unable to load SSL private key from PEM file
‘/etc/ssl/private/example.pem’.
[WARNING] 232/013138 (32073) : parsing [/etc/haproxy/haproxy.cfg:59] : a
‘redirect’ rule placed after a ‘use_backend’ rule will still be processed
before.
[ALERT] 232/013138 (32073) : Error(s) found in configuration file :
/etc/haproxy/haproxy.cfg
[ALERT] 232/013138 (32073) : Proxy ‘https-443’: no SSL certificate
specified for bind ‘x.x.x.x:443’ at [/etc/haproxy/haproxy.cfg:54] (use
‘crt’).
[ALERT] 232/013138 (32073) : Fatal errors found in configuration.

Is there a bug in this feature?



my config looks like this:


frontend https-443

    bind x.x.x.x:443 ssl crt /etc/ssl/private/example.pem force-tlsv12

    mode http

    use_backend example if { ssl_fc_sni example.com }

-- 
Joshua P. Gibson

Reply via email to