Istio Envoy代理转发客户端证书信息

问题描述 投票:0回答:1

我们有一个带有Istio 1.0的Kubernetes集群(带有Envoy代理)和其他一些东西。我们使用Istio的网关来验证客户端证书。我们希望将客户证书的内容传递给内部服务。

在Envoy文档中的Here我找到了以下配置选项:forward_client_cert,它允许在标题x-forwarded-client-cert中传递主题和其他信息,虽然我找不到在Istio中启用它的方法。

有没有人试图做类似的事情并取得成功?或者Istio不支持这个?

kubernetes istio envoyproxy
1个回答
2
投票

这是一个迟到的答案,但1.1.0 release支持转发客户端证书详细信息。这是https网关的默认行为,但是,您需要全局启用相互TLS才能使其正常工作。为此,请应用以下MeshPolicy对象:

apiVersion: "authentication.istio.io/v1alpha1"
kind: "MeshPolicy"
metadata:
  name: "default"
spec:
  peers:
  - mtls: {}

应用此功能后,对ingress的https调用会将X-Forwarded-Client-Cert标头转发到服务器。

但请记住,一旦启用了全局mtls,群集中的服务调用服务也必须使用tls。这可以通过为模式设置为DestinationRule(或ISTIO_MUTUAL,如果您想使用自己的客户端证书而不是Citadel生成的那些服务)创建MUTUAL来完成:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: myApp
  namespace: default
spec:
  host: myApp
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
© www.soinside.com 2019 - 2024. All rights reserved.