使用NGINX入口的基于证书的相互认证
时间:2020-01-09 10:34:18 来源:igfitidea点击:
说明
在本指南中,我们将学习如何使用Kubernetes上的NGINX Ingress控制器配置双向双向身份验证。
取得证书
相互认证的第一步是保护端点(在本例中为NGINX Ingress控制器)的安全。我们将需要来自可信机构的证书和密钥。
创建一个NGINX入口资源
NGINX入口控制器是使用YAML文件创建的。证书和密钥都将
apiVersion: v1
kind: Ingress
metadata:
name: myapp-ingress
spec:
rules:
- host: app.theitroad.com
http:
paths:
- backend:
serviceName: myapp
servicePort: 80
path: /
tls:
- hosts:
- app.theitroad.com
secretName: my-certs
tls:此密钥提供用于在NGINX入口控制器中启用HTTPS的配置密钥。
hosts:用于定义许多主机名,将启用TLS。通配符是不支持的,因此添加到证书的每个主机名也必须在此处设置。
secretName:创建用于存储证书和密钥的秘密资源的名称。
使用kubectl apply命令创建新的入口资源。
kubectl apply -f nginx-ingress.yml
启用基于证书的相互认证
通过向入口控制器添加注释来启用相互认证。批注将NGINX配置设置为验证客户的证书。
更新现有的NGINX Ingress YAML文件,添加注释。
apiVersion: v1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"
nginx.ingress.kubernetes.io/auth-tls-secret: "default/my-certs"
spec:
rules:
- host: app.theitroad.com
http:
paths:
- backend:
serviceName: myapp
servicePort: 80
path: /
tls:
- hosts:
- app.theitroad.com
secretName: my-certs
验证客户端:指示NGINX验证客户端提供的证书,确保该证书来自受信任的机构。

