我已经阅读了article,有关istio中的TLS起源问题。让我在这里引用它:
这个故事有一个警告。在HTTPS中,所有HTTP详细信息(主机名,路径,标头等)均被加密,因此Istio无法知道加密请求的目标域。好了,Istio可以通过SNI(服务器名称指示)字段来了解目标域。但是,此功能尚未在Istio中实现。 因此,当前Istio无法基于目标域执行HTTPS请求过滤。
我想了解,粗体字的真正含义是什么?因为,我已经尝试过:
下载了
istio-1.0.0在这里获得
git add .
git commit -m 'whatever_message'
git push
yaml代码。
kubectl apply -f <(istioctl kube-inject -f样本/sleep/sleep.yaml)
samples
apiVersion: v1
kind: Service
metadata:
name: sleep
labels:
app: sleep
spec:
ports:
- port: 80
name: http
selector:
app: sleep
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: sleep
spec:
replicas: 1
template:
metadata:
labels:
app: sleep
spec:
containers:
- name: sleep
image: tutum/curl
command: ["/bin/sleep","infinity"]
imagePullPolicy: IfNotPresent
ServiceEntry
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: cnn
spec:
hosts:
- "*.cnn.com"
ports:
- number: 80
name: http-port
protocol: HTTP
- number: 443
name: https-port
protocol: HTTPS
resolution: NONE
如您所见,我可以使用HTTPS(ssl)协议访问edition.cnn.com。我误会了大胆的说法的意思吗?
答案 0 :(得分:3)
引用的博客文章来自2018年1月31日,当时的说法是正确的。现在(1.0)Istio支持通过SNI进行流量路由,请参阅https://istio.io/docs/tasks/traffic-management/egress/。
这提醒我更新该博客文章,它将在本周末完成。抱歉给您带来的困惑,谢谢您指出问题。
答案 1 :(得分:0)
您在这里显示的是一个https连接/请求,没有理由不起作用。在这种情况下,进行过滤意味着根据目标http <目的>主机采取特定的操作(即拒绝访问)(使在同一服务器IP上托管多个站点成为可能)。声明引用。
在建立TLS连接之前,SNI是识别您要连接的主机的方法。