Взаимный TLS Istio не разрешает HTTPS-соединение при использовании режима PERMISSIVE (http / https) - PullRequest
0 голосов
/ 09 апреля 2019

Когда в моей сеточной службе установлена ​​следующая конфигурация:

  • На стороне сервера: STRICT (только https)
  • На стороне клиента: ISTIO_MUTUAL (https / http)

Я могу сделать HTTPS-запрос, но не HTTP.Так что все в порядке.

Теперь, если я хочу разрешить HTTP и HTTPS на стороне сервера, я должен сделать следующее:

  • На стороне сервера: РАЗРЕШЕНИЕ (https / http)
  • Клиентская сторона: ISTIO_MUTUAL (https / http)

Теперь я должен иметь возможность выполнять HTTP и HTTPS-запросов, но, к сожалению, HTTPS больше не работает


Ниже приведена конфигурация для STRICT HTTPS на стороне сервера (работает)

apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
  name: "default"
  namespace: "foo"
spec:
  peers:
  - mtls:
      mode: STRICT     #Can be : PERMISSIVE | STRICT

Теперь конфигурация для разрешающей (HTTP / HTTPS) стороны сервера (не работает)

apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
  name: "default"
  namespace: "foo"
spec:
  peers:
  - mtls:
      mode: PERMISSIVE     #PERMISSIVE | STRICT

Наконец, конфигурация на стороне клиента установлена ​​для HTTP и HTTPS такпроблема не должна исходить оттуда.

apiVersion: "networking.istio.io/v1alpha3"
kind: "DestinationRule"
metadata:
  name: "default"
  namespace: "foo"
spec:
  host: "*.foo.svc.cluster.local"
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL    #Can be : ISTIO_MUTAL | DISABLE

Чтобы проверить HTTPS-соединение, я запускаю модуль в пространстве имен foo, а затем скручиваю службу httpbin, используя клиентские сертификаты, следующим образом:

curl https://httpbin:8000/headers -s -w '%{http_code}\n' --key /etc/certs/key.pem --cert /etc/certs/cert-chain.pem --cacert /etc/certs/root-cert.pem -k

В режиме PERMISSIVE тайм-ауты соединения, хотя он все еще должен поддерживать HTTPS.

...