我正在使用 Kubernetes 和 kong 入口控制器。我已经设置了一个客户端、Kong 网关和服务器。客户端使用 mTLS 连接 Kong 网关,Kong 网关使用纯 HTTP 连接服务器,其标头包含客户端证书 pem。
在 nginx 中,我可以简单地添加此配置。
server{
location / {
proxy_set_header ssl-client-cert $ssl_client_escaped_cert;
}
}
在 kong 网关中,我尝试设置 helm values.yaml
env.nginx_proxy_proxy_set_header: "ssl-client-cert $ssl_client_escaped_cert"
但是在容器中/etc/kong_prefix/nginx-kong.conf
,它看起来像这样并且标头没有发送出去。
server {
proxy_set_header ssl-client-cert $ssl_client_escaped_cert;
}
我尝试使用插件request-transformer
,但它认为$ssl_client_escaped_cert
是纯字符串。
apiVersion: configuration.konghq.com/v1
kind: KongClusterPlugin
metadata:
name: kong-plugin-client-cert-header
annotations:
kubernetes.io/ingress.class: kong
labels:
global: "true"
config:
add:
headers:
- ssl-client-cert: $ssl_client_escaped_cert;
plugin: request-transformer
如何获取客户端证书并作为标头发送到服务器?