HAProxy-无法验证 SSL 客户端 CA 链

HAProxy-无法验证 SSL 客户端 CA 链

情况:

我希望它能正常工作:请求来自客户端并通过 443 端口(ssl)到达 haproxy,然后必须到达 80 端口上的后端。

我有中间 CA (ca1) 颁发的服务器证书、ca1 证书和客户端证书。但我没有找到从 Windows 认证机构向 haproxy 服务器 (ubuntu) 请求正确服务器证书的解决方案。可能是模板的原因。我从 Windows 机器服务器证书请求并将其复制到 haproxy。

问题是 HAProxy 日志有此错误“无法验证 SSL 客户端 CA 链”

配置haproxy:

前端 https_frontend

绑定 192.168.14.167:443 ssl crt /etc/haproxy/cert/request/server.pem ca 文件 /etc/haproxy/cert/request/ca1-certificate.pem 验证可选 crt-ignore-err 全部 no-sslv3

模式 http

日志/dev/log local7

选项 httplog

使用后端 web_server_1,如果 { ssl_fc_has_crt }

默认后端 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 检查

这个计划行不通。

附加信息:从 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 信息...验证返回代码:20(无法获取本地颁发者证书)

(如果我的英语不好请见谅)我已经阅读了很多关于它的帖子,但没有找到解决方案。

答案1

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

相关内容