es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

handle:connection():ssl():subjectPeerCertificate() devuelve “” después de actualizar a Istio 1.10.6, lo que indica que no se encontró ningún certificado de cliente.

Estamos utilizando el filtro Lua en EnvoyFilter en Istio para verificar los detalles del certificado. El uso se ve así (se omite la verificación detallada del nombre del certificado del cliente).

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


La función handle:connection():ssl():subjectPeerCertificate() funcionó bien en Istio 1.9.9, sin embargo, después de actualizar a 1.10.6, sin otros cambios, no se encuentra ningún certificado peer y la función retorna vacío.
Hemos revisado los documentos de Istio y Envoy durante mucho tiempo, pero no hemos encontrado ningún cambio importante para esta función. Algunos intentos como agregar el parche LISTENER MERGE como este no ayudan.
¿Podrías ayudarnos a sugerir dónde podría estar el problema?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la función handle:connection():ssl():subjectPeerCertificate() no está devolviendo los resultados esperados después de actualizar a Istio 1.10.6. Esto podría ser debido a cambios en la forma en que se manejan los certificados SSL en la nueva versión de Istio.

    Para solucionar el problema, algunas sugerencias son:

    • Verifique las notas de la versión de Istio para conocer los cambios relacionados con los certificados SSL.
    • Compruebe si los certificados SSL están configurados correctamente en la puerta de enlace de Istio y los servicios de destino.
    • Intente utilizar una función o método diferente para recuperar los certificados SSL, como handle:headers():get(":ssl-client-cert").
    • Habilite el registro de depuración para el sidecar del proxy de Istio e inspeccione los registros en busca de errores o advertencias relacionadas con los certificados SSL.
    • Pida ayuda o informe el problema en el repositorio de Github o el foro de la comunidad de Istio.

    Si ninguno de estos esfuerzos funciona, podría ser necesario involucrar a un experto con más conocimientos sobre la configuración de SSL en Istio.

Comments are closed.