通过ha或者nginx做证书卸载,emq怎么获取对端证书信息

通过ha或者nginx做证书卸载,emq怎么获取对端证书信息

这个是指在ha做 tls终结 么,可以参考这个基于 HAProxy 搭建 EMQX 集群 | EMQ

通过ha或者ng做客户端证书校验与卸载,然后需要在emq中获取客户端证书CN,通过http接口认证将CN传入校验证书CN是否合法,现在就是想知道可不可以实现

不行,已经做了证书 卸载之后,emqx 就拿不到cn了。

将CN放入header中往后面传,emq能不能获取到header的数据,如果能获取,应该怎么获取

这个具体是怎么操作的

在ha上配置http-request set-header certCn %{+Q}[ssl_c_s_dn(cn)] if { ssl_c_used }获取客户端证书CN并放入header key=certCn中,emq有没有办法获取header中的数据

问了一下同事:
应该是直接
配置 HAProxy: 在 HAProxy 的 backend 配置中,为 server 指令添加 send-proxy-v2-options ssl-cn。这会开启 PROXY Protocol v2,并将客户端证书的 CN (Common Name) 附加在协议头中发送给 EMQX。

backend  emqx_tcp_backend
mode tcp
server emqx 127.0.0.1:1883 send-proxy-v2-options ssl-cn

在 dashboard 监听器中打开proxy_protocol
然后在认证中就能看到cert_subject cert_common_name 字段。

监听器中没有找到开启proxy_protocol的选项,具体是在哪里呢

是在监听器的自定义配置中配置吗

好的,非常感谢

认证的时候调用http接口,请求参数中如何获取这个值呢,还是${username}吗

添加监听器类型,选择tcp还是ssl呢

建议您看看我发在上面的文章,和官方的文档(官方的文档比我一两句的话详细清晰多了),不要凭感觉随便自己想然后随便点一下,然后又来问为什么不行。这样即浪费你的时间,也浪费我的。 :saluting_face: