HAProxy – ssl客户端的ca链不能被validation

情况:

我想这个工作:请求来自客户端,通过443端口(ssl)去haproxy,然后它必须去80端口的后端。

我有中间ca(ca1),ca1证书和客户端证书给出的服务器证书。 但我没有find解决scheme,请求从Windows证书颁发机构正确的服务器证书haproxy服务器(Ubuntu的)。 可能是模板的原因。 我要求从Windows机器服务器证书,并将其复制到haproxy。

和问题是HAProxy日志有这个错误“SSL客户端CA链无法validation”

configurationhaproxy:

前端https_frontend

bind 192.168.14.167:443 ssl crt /etc/haproxy/cert/request/server.pem ca -file /etc/haproxy/cert/request/ca1-certificate.pemvalidation可选的crt-ignore-err全部no-sslv3

模式http

日志/ dev / log local7

选项httplog

use_backend web_server_1 if {ssl_fc_has_crt}

default_backend web_server_2

后端web_server_1

模式http

选项httplog

服务器w7 192.168.11.109:80检查

后端web_server_2

模式http

选项httplog

服务器xp 192.168.13.205:80检查

这个scheme不起作用。

附加信息:从winXP,我运行opennssl的日志

C:\ OpenSSL-Win32 \ bin> openssl s_client -connect haproxy2:443 -cert client.pem -CAfile ca1-certificate.pem -state -showcerts

316:错误:14094418:SSL例程:SSL3_READ_BYTES:tlsv1警报未知ca:。\ ssl \ s3_pkt.c:1275:SSL警报编号48

316:错误:140790E5:SSL例程:SSL23_WRITE:ssl握手失败:。\ ssl \ s23_lib.c:184:… cer info …validation返回码:20(无法获取本地颁发者证书)

(对不起,我的英文,如果不好)我已经阅读了很多文章,但没有find解决办法。

文件server.pem和client.pem应该有3个部分,应该看起来像这样:

-----BEGIN RSA PRIVATE KEY----- <lots of base64 encoded data> -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- <lots of base64 encoded data> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <lots of base64 encoded data> -----END CERTIFICATE----- 

私钥可能不是RSA,但应该是第一个。 第一个证书是签名的服务器证书。 第二个证书应该是CA证书。 您可以使用文本编辑器复制和粘贴每个部分。 要检查你的证书,运行这个。

 $ openssl verify -CAfile ca1-certificate.pem server.pem server.pem: OK