当我在网格服务中设置以下配置时:
我可以发出HTTPS请求,但不能发出HTTP。没关系。
现在,如果我想同时允许HTTP 和 HTTPS服务器端,则必须执行以下操作:
现在我应该能够执行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。