备考ICA----Istio实验12—配置双向TLS Istio Ingress Gateway实验
本实验部分配置延续上个Istio实验11
1. 重新配置secret
重新配置secret使其带有ca证书可以验证客户端证书是否合法
 先删除原有secret,再配置新的secret
# 删除原tls类型的secret
kubectl -n istio-system delete secret pana-credential
# 重新创建secret,带有ca的证书
kubectl create secret -n istio-system generic pana-credential \
--from-file=tls.key=example_certs_pana/pana.example.com.key \
--from-file=tls.crt=example_certs_pana/pana.example.com.crt \
--from-file=ca.crt=example_certs_root/example.com.crt
# 确认secret被正确创建
kubectl get  secrets -n istio-system 

2. Gateway配置
将Gateway设置为MUTUAL模式
 mode: MUTUAL
 tls-ingress/pana-tls-gateway-mutual.yaml
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
 name: mygateway
spec:
 selector:
   istio: ingressgateway                # use istio default ingress gateway
 servers:
 - port:
     number: 443
     name: pana
     protocol: HTTPS
   tls:
     mode: MUTUAL
     credentialName: pana-credential    # must be the same as secret
   hosts:
   - pana.example.com
更新部署gateway
kubectl apply -f tls-ingress/pana-tls-gateway-mutual.yaml
3. 测试
3.1 没有客户端证书访问测试
curl -v -HHost:pana.example.com --resolve "pana.example.com:443:192.168.126.220" \
--cacert example_certs_root/example.com.crt "https://pana.example.com:443/hello"

3.2 生成客户端证书
mkdir example_certs_client
# 生成key和证书请求文件
openssl req -out example_certs_client/client.example.com.csr  -newkey rsa:2048 \
-nodes -keyout example_certs_client/client.example.com.key \
-subj "/CN=pana.example.com/O=client organization"
# 使用ca签发证书,用于区别其他证书这里有效期设置成2年
openssl x509 -req -sha256 -days 730 -CA example_certs_root/example.com.crt \
-CAkey example_certs_root/example.com.key \
-set_serial 1 -in example_certs_client/client.example.com.csr \
-out example_certs_client/client.example.com.crt
这样就在example_certs_client目录下生成了3个文件
 
3.3 使用client证书再次访问
带上客户端证书再次访问测试
curl -v -HHost:pana.example.com --resolve "pana.example.com:443:192.168.126.220" \
--cacert example_certs_root/example.com.crt \
--cert example_certs_client/client.example.com.crt \
--key example_certs_client/client.example.com.key \
"https://pana.example.com:443/hello"
通过之前定义的vs将请求转到了helloworld的后端
 
 此时由于带了客户端证书,并且可以通过ca进行验证通过.这样就不再报错了
 至此备考ICA----Istio实验12—配置双向TLS Istio Ingress Gateway实验完成.



















