使用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验证客户端提供的证书,确保该证书来自受信任的机构。