这里以istio 1.6.0为例
不同版本的istio安装步骤参考官网:Istio / Secure Gateways
注:这里只给出相关步骤参考,在实践时,结合该博客、官网一起看。
安全的网关,其实就是说对外提供https的服务。当然了,不仅是提供https的服务,还有一些其它相关的安全网关知识点。
一、准备工作
二、实验过程
(1)任务1—针对单一的主机配置TLS ingress gateway【单向TLS】
【1】针对ingress gateway创建一个secret
【2】针对servers定义gateway,指定端口为443,并且针对 credentialName 的值指向httpbin-credential。这个值和 secret 的名称是一样的。TLS的模式是SIMPLE【单向TLS】
【3】配置gateway的ingress traffic路由。定义相对应的虚拟服务
【4】发送HTTPS请求,通过HTTPS来访问httpbin服务,是会成功的
【5】删除gateway的密钥,和创建一个新的去改变上面创建的istio Gateway资源的凭据
【6】通过curl来使用新的证书链访问httpbin服务,是会成功的
【7】假如你尝试使用先前的证书去访问,那么将会失败
(2)任务2—针对多个的主机配置TLS ingress gateway【单向TLS】
【1】为了还原针对httpbin的凭据,删除它的密钥,然后再创建它。【其实也可以不操作这步——如果不操作这步的话,访问httpbin服务就要使用新证书】
【2】启动helloworld-v1案例
【3】针对helloworld-v1.example.com产生证书和私有Key
【4】创建helloworld-credential密钥
【5】定义gateway如下所示:
【6】定义gateway的流量路由,定义相对应的虚拟服务
【7】发送https的请求到helloworld-v1.example.com
【8】发送https请求到httpbin.example.com去测试
(3)任务3—配置双向的TLS ingress gateway【双向TLS】
举例说明双向TLS是什么:浏览器去访问https://baidu.com时浏览器会显示【是安全的,即可以访问成功】。这是因为只有客户端【浏览器】去验证了服务端【baidu.com】的证书,而服务端【baidu.com】并没有验证客户端【浏览器】的证书。双向的TLS就是说:客户端验证服务端的证书,同时服务端也验证客户端的证书【即是双向的】。
【1】改变gateway的定义,设置TLS的模式为MUTUAL【双向TLS】
【2】尝试使用先前的方法去发送HTTPS请求,来看它是如何失败的
- 上面生成的证书【 httpbin-credential】是服务器的证书。因为这里是双向TLS,所以还需要生成客户端的证书。
【3】产生客户端的证书和私有key
【4】传送client的证书和key给curl和重新发送请求