备考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实验完成.