这里以istio 1.6.0为例

不同版本的istio安装步骤参考官网:Istio / Secure Gateways

注:这里只给出相关步骤参考,在实践时,结合该博客、官网一起看。

安全的网关,其实就是说对外提供https的服务。当然了,不仅是提供https的服务,还有一些其它相关的安全网关知识点。

istio gateway virtualservice 指定端口 istio ingressgateway 界面_服务端

一、准备工作


二、实验过程


(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】

istio gateway virtualservice 指定端口 istio ingressgateway 界面_gateway_02

【1】为了还原针对httpbin的凭据,删除它的密钥,然后再创建它。【其实也可以不操作这步——如果不操作这步的话,访问httpbin服务就要使用新证书】


【2】启动helloworld-v1案例


【3】针对helloworld-v1.example.com产生证书和私有Key


【4】创建helloworld-credential密钥


【5】定义gateway如下所示:

istio gateway virtualservice 指定端口 istio ingressgateway 界面_服务端_03

 

istio gateway virtualservice 指定端口 istio ingressgateway 界面_gateway_04

【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就是说:客户端验证服务端的证书,同时服务端也验证客户端的证书【即是双向的】。

istio gateway virtualservice 指定端口 istio ingressgateway 界面_服务端_05

istio gateway virtualservice 指定端口 istio ingressgateway 界面_HTTPS_06

【1】改变gateway的定义,设置TLS的模式为MUTUAL【双向TLS】


【2】尝试使用先前的方法去发送HTTPS请求,来看它是如何失败的

istio gateway virtualservice 指定端口 istio ingressgateway 界面_客户端_07

  • 上面生成的证书【 httpbin-credential】是服务器的证书。因为这里是双向TLS,所以还需要生成客户端的证书。

【3】产生客户端的证书和私有key


【4】传送client的证书和key给curl和重新发送请求


三、如果上面的流程中,有哪一步访问不通,可以使用如下的步骤进行排错


四、测试完之后,清除相应规则,以防对下次案例的影响