Istio真的不能根据目标域执行筛选HTTPS请求吗?

时间:2018-08-08 05:08:15

标签: kubernetes istio

我已经阅读了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
  • 然后在pod中执行以下curl命令

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。我误会了大胆的说法的意思吗?

2 个答案:

答案 0 :(得分:3)

引用的博客文章来自2018年1月31日,当时的说法是正确的。现在(1.0)Istio支持通过SNI进行流量路由,请参阅https://istio.io/docs/tasks/traffic-management/egress/

这提醒我更新该博客文章,它将在本周末完成。抱歉给您带来的困惑,谢谢您指出问题。

答案 1 :(得分:0)

您在这里显示的是一个https连接/请求,没有理由不起作用。在这种情况下,进行过滤意味着根据目标http <目的>主机采取特定的操作(即拒绝访问)(使在同一服务器IP上托管多个站点成为可能)。声明引用。

在建立TLS连接之前,SNI是识别您要连接的主机的方法。