You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按服务URL路径启用/禁用mTLS?Istio配置咨询

针对特定URL路径启用/禁用mTLS的Istio配置方案

可以实现你描述的需求,核心思路是通过拆分Gateway的HTTPS Server配置,结合VirtualService的路径匹配规则,为不同URL路径分配不同的TLS认证策略。以下是具体的配置调整方案:

1. 修改Gateway配置

需要在Gateway中新增一个HTTPS Server,专门处理不需要mTLS的/status和/metrics路径,使用SIMPLE TLS模式(仅单向HTTPS认证);原有的MUTUAL模式Server保留,处理其他需要强制mTLS的路径。

kind: Gateway
metadata:
  name: some-gateway-dev
spec:
  selector:
    istio: dev-ingressgateway
  servers:
    - hosts:
        - some.domain.com
      port:
        name: http-some-gateway-dev
        number: 80
        protocol: HTTP
      tls:
        httpsRedirect: true
    # 处理需要mTLS的路径(除/status、/metrics外的所有路径)
    - hosts:
        - some.domain.com
      port:
        name: https-mtls-some-gateway-dev
        number: 443
        protocol: HTTPS
      tls:
        credentialName: some-gateway-dev-credential
        mode: MUTUAL
        subjectAltNames:
          - allowconnectionfromhost.com
    # 处理不需要mTLS的/status和/metrics路径
    - hosts:
        - some.domain.com
      port:
        name: https-no-mtls-some-gateway-dev
        number: 443
        protocol: HTTPS
      tls:
        credentialName: some-gateway-dev-credential
        mode: SIMPLE

2. 更新VirtualService配置

通过路径匹配规则,将/status、/metrics路由到不需要mTLS的Gateway Server,其他路径路由到启用mTLS的Server。注意规则顺序:更具体的路径要放在通用路径前面,避免被覆盖。

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
 name: some-virtualservice
spec:
  gateways:
  - some-gateway-dev
  - mesh
  hosts:
  - some.domain.com
  - service-tcp-some
  http:
  # 匹配/status和/metrics路径,路由到无mTLS的Gateway
  - match:
    - uri:
        prefix: /status
    - uri:
        prefix: /metrics
    timeout: 30s
    route:
    - destination:
        host: service-tcp-some
        port:
          number: 8080
        subset: some-#VERSION#
      weight: 100
  # 匹配其他所有路径,路由到启用mTLS的Gateway
  - match:
    - uri:
        prefix: /
    timeout: 30s
    route:
    - destination:
        host: service-tcp-some
        port:
          number: 8080
        subset: some-#VERSION#
      weight: 100

关键说明

  • TLS模式差异:MUTUAL模式要求客户端提供证书完成双向认证,SIMPLE模式仅需服务端提供证书,客户端无需认证。
  • SubjectAltNames作用:该配置仅在MUTUAL模式下生效,用于验证客户端证书的SAN字段,无需在SIMPLE模式中配置。
  • 规则优先级:VirtualService中匹配规则按顺序执行,更具体的路径规则必须放在通用路径规则之前,否则会被覆盖。

内容的提问来源于stack exchange,提问作者Gaurav Dwivedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:02:37