idou老师教你学Istio 17 : 通过HTTPS进行双向TLS传输
【摘要】 众所周知,HTTPS是用来解决 HTTP 明文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份,为客户端和服务器端之间建立“SSL”通道,确保数据运输安全。而Istio的双向TLS也用来保证数据传输安全。那么,Istio的双向TLS是如何与HTTPS服务一起工作的呢?
众所周知,HTTPS是用来解决 HTTP 明文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份,为客户端和服务器端之间建立“SSL”通道,确保数据运输安全。而Istio的双向TLS也用来保证数据传输安全。那么,Istio的双向TLS是如何与HTTPS服务一起工作的呢?
下面通过实例演示Istio的双向TLS是如何与HTTPS服务一起工作的,包括三个部分:
• 在没有 Istio sidecar 的情况下部署 HTTPS 服务
• 关闭 Istio 双向 TLS 认证情况下部署 HTTPS 服务
• 部署一个启动双向 TLS 的 HTTPS 服务。对于每个部署,请求连接到此服务并验证其是否有效。
环境准备
• 未启用双向TLS的安装了Istio的k8s集群
• 安装openssl,生成证书和configmap
通过openssl生成key和证书:
从给定的公私钥对创建TLS secret:
使用kubectl创建Configmap:
1.没有部署sidecar
创建一个不部署sidecar的基于nginx的HTTPS服务,并创建一个部署sidecar的sleep应用来调度nginx
检查上述pod是否正常运行
在pod正常运行时,从sleep应用的istio-proxy容器内访问HTTPS服务:
可以看到,nginx能正常访问。
2. 部署sidecar并禁用双向TLS
删除上一步创建的未部署sidecar的HTTPS服务,并用sidecar部署它
查看pod是否正常启动:
在pod正常运行时,从istio-proxy容器运行,可以看到,nginx能正常访问:
3. 部署sidecar,并启用双向TLS
通过配置网格级别的认证策略启用全局双向TLS,首先配置网格认证策略:
配置目的地规则:
此时,网格中的所有服务已经开启了双向TLS功能,从sleep容器中访问nginx是正常的:
从sleep容器中访问时,工作流为“sleep→sleep-proxy→nginx-proxy→nginx” ,此时,整个过程是7层流量,在sleep-proxy到nginx-proxy之间有一个L4双向TLS加密。
而在istio-proxy中运行时,它无法工作:
此时,工作流为“sleep-proxy→nginx-proxy→nginx”,nginx-proxy会从sleep-proxy中获得双向TLS流量,但是sleep-proxy无法提供客户端证书,因此,它不起作用。
相关服务请访问https://support.huaweicloud.com/cce/index.html?cce_helpcenter_2019
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)