情况:
我想这个工作:请求来自客户端,通过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