首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HAProxy -将客户端证书转发到后端HashiCorp Vault服务器

HAProxy -将客户端证书转发到后端HashiCorp Vault服务器
EN

Stack Overflow用户
提问于 2022-10-03 14:22:50
回答 1查看 100关注 0票数 0

我已经尝试了大约一个星期来设置一个HashiCorp Vault环境,但是由于无法将我的客户端证书转发到我的后端,所以我不得不设置最后一部分: HAProxy。

我目前在HAProxy上的设置是:

代码语言:javascript
复制
frontend vaultfrontend
        mode http
        bind *:8200 ssl crt /home/administrator/tls.crt verify none
        redirect scheme https code 301 if !{ ssl_fc }
        default_backend vaultbackend
backend vaultbackend
        mode http
        timeout check 5s

        option httpchk
        http-check connect ssl
        http-check send meth GET uri /v1/sys/health
        http-check expect status 200

        server a.vault a.vault.test.local:8200 ssl verify none check
        server b.vault b.vault.test.local:8200 ssl verify none check
        server c.vault c.vault.test.local:8200 ssl verify none check

我的后端保险库服务器正在运行带有Windows CA签名证书的SSL,并且通过它们各自的URLS运行得很好。HAProxy有一个签名的证书,允许人们通过这个URL:https://vault.test.local:8200连接到它,这个URL:https://vault.test.local:8200就像预期的那样工作。

当我试图通过HashiCorp Vault的Cert Auth身份验证方法访问Vault时,问题就出现了。每当我试图通过https://vault.test.local:8200 (即HAProxy )进行身份验证时,都会收到一条错误消息,表示请求中缺少客户端证书:({"errors":["client certificate must be supplied"]})'

然而,如果我直接以我的Vault服务器为目标的话,它可以很好的工作。

我尝试过编辑配置以包含以下内容:具有不同变体的http-request set-header X-Client-Cert %{+Q}[ssl_c_der,base64],但是它没有改变什么。在我看来,我真的很喜欢HAProxy,因为无论出于什么原因,我都不会接受从VaultSharp应用程序(C#)发送的X客户端证书并转发它。

有人有这样的设置吗?或者至少知道问题出在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-20 13:09:30

我终于解决了这个问题,问题是用HAProxy执行SSL-终止总是会导致客户端证书丢失(至少从我最后尝试的所有事情中)。

解决方案是执行SSL-传递,客户端证书将被Vault环境正确读取。

看起来会是这样的:

代码语言:javascript
复制
frontend vaultfrontend
        mode tcp
        bind *:8200
        redirect scheme https code 301 if !{ ssl_fc }
        default_backend vaultbackend
backend vaultbackend
        mode tcp
        timeout check 5s

        option httpchk
        http-check connect ssl
        http-check send meth GET uri /v1/sys/health
        http-check expect status 200

        server a.vault a.vault.test.local:8200 ssl verify none check
        server b.vault b.vault.test.local:8200 ssl verify none check
        server c.vault c.vault.test.local:8200 ssl verify none check
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73936861

复制
相关文章

相似问题

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