首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将自签名的客户端证书添加到HAProxy中,以便进行交互-tls?

将自签名的客户端证书添加到HAProxy中,以便进行交互-tls?
EN

Security用户
提问于 2021-06-28 15:34:39
回答 1查看 885关注 0票数 0

我将客户端证书添加到ca.pem中,如

代码语言:javascript
运行
复制
bind 0.0.0.0:443 ssl crt /etc/ssl/private/asdf.hdavid.io.pem verify optional ca-file /etc/ssl/certs/ca.pem
http-request set-header X-SSL-Client-Verify        %[ssl_c_verify]

然后用curl -v --key key.pem --cert cert.pem https://asdf.hdavid.io调用

但是,在这两种情况下,当客户端呈现有效的证书时,以及当客户端呈现不属于haproxy信任的证书时,我得到了X-SSL客户端验证在后端为零。

实际上,它似乎是有效的,通过验证正确地阻止来自我在haproxy中信任的证书的请求。但当我核实可选的时候。我总是把ssl_c_verify作为零,为什么呢?

EN

回答 1

Security用户

回答已采纳

发布于 2021-06-28 17:17:24

但当我核实可选的时候。我总是把ssl_c_verify作为零,为什么呢?

来自哈代文献

ssl_c_verify :整数在通过SSL/TLS传输层进行传入连接时返回验证结果错误ID,否则如果没有遇到错误,则为零。有关错误代码的详尽列表,请参阅SSL库的文档。

这个零基本上是X509_V_OK,正如openssl验证中所记录的那样。

但是,在这两种情况下,当客户端呈现有效的证书时,以及当客户端呈现不属于haproxy信任的证书时,我得到了X-SSL客户端验证在后端为零。

当客户端显示不受信任的证书时,由于验证失败,连接将失败:

代码语言:javascript
运行
复制
$ curl ... -cert wrong.pem ...
...
* OpenSSL SSL_read: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca, errno 0

但是当没有提供证书时,连接就会成功,因为客户端证书被认为是可选的。

但是,看起来您希望连接在错误的证书上实际成功,但是要向上游转发错误。如果首先使用了客户端证书,您还希望转发这些信息。在这种情况下,您可以使用如下内容:

代码语言:javascript
运行
复制
bind 0.0.0.0:443 ssl ... verify optional crt-ignore-err all ...
http-request set-header X-SSL-Client-Verify   %[ssl_c_verify]
http-request set-header X-SSL-Client-Used     %[ssl_c_used]

如果给出了客户端证书,则X-SSL-Client-Used头将是1。如果在证书验证期间没有发生错误,则X-SSL-Client-Verify将为0,这包括未授予证书的情况。否则,它将返回验证错误。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/251832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档