首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级到Istio1.10.6后,handle:connection():ssl():subjectPeerCertificate()返回"“,表示没有找到对等证书

升级到Istio1.10.6后,handle:connection():ssl():subjectPeerCertificate()返回"“,表示没有找到对等证书
EN

Stack Overflow用户
提问于 2022-01-07 11:21:49
回答 1查看 115关注 0票数 0

我们在Istio中使用EnvoyFilter中的Lua过滤器来检查证书细节。用法如下(省略了对client_cert_name的详细验证)。

代码语言:javascript
复制
spec:
  workloadSelector:
    labels:
      istio: ingressgateway
  configPatches:
    - applyTo: HTTP_FILTER
      match:
        context: GATEWAY
        listener:
          filterChain:
            filter:
              # https://www.envoyproxy.io/docs/envoy/latest/version_history/v1.14.0#deprecated
              name: "envoy.filters.network.http_connection_manager"
        proxy:
          proxyVersion: ^1\.10.*
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.lua
          typed_config:
            # https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/lua/v3/lua.proto#extension-envoy-filters-http-lua
            "@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua"
            inlineCode: |
              function envoy_on_request(handle)
                -- https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/lua_filter#subjectpeercertificate
                local client_cert_name = handle:connection():ssl():subjectPeerCertificate()
                if client_cert_name == "" and handle:headers():get("Authorization") == nil then
                  handle:respond({[":status"] = "401"},"Unauthorized")
                end

函数handle:connection():ssl():subjectPeerCertificate()在Istio1.9.9中运行良好,但是在升级到1.10.6之后,如果没有其他更改,就不会找到对等证书,并且函数只返回空的。我们已经检查了伊斯蒂奥和特使的文件很长一段时间,但没有发现这一职能的突破变化。添加侦听器合并修补程序(如 )等几次尝试都没有帮助。你能帮我建议一下哪里有问题吗?

EN

回答 1

Stack Overflow用户

发布于 2022-01-14 13:42:17

最后,从Istio1.10中可以看出,有一个提交使Istio不添加简单的验证上下文。直到最新版本1.12.1,逻辑仍然存在。

我们的服务在网关中使用简单的TLS模式,这导致了这个问题中描述的问题,如下所示:

代码语言:javascript
复制
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
... 
  servers:
    - port:
        number: 443
        name: https
        protocol: HTTPS
      tls:
        mode: SIMPLE

在将模式改为互操作之后,问题就解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70620495

复制
相关文章

相似问题

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