Istio的Mutual TLS在使用PERMISSIVE模式(http / https)时不允许HTTPS连接

时间:2019-04-09 07:48:22

标签: kubernetes tls1.2 istio

当我在网格服务中设置以下配置时:

  • 服务器端: STRICT (仅适用于https)
  • 客户端: ISTIO_MUTUAL (https / http)

我可以发出HTTPS请求,但不能发出HTTP。没关系。

现在,如果我想同时允许HTTP HTTPS服务器端,则必须执行以下操作:

  • 服务器端: PERMISSIVE (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中的pod中,然后使用客户端证书以以下方式卷曲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。

0 个答案:

没有答案