前端双向认证配置
平台部署后默认打开了 TLS 服务端(单向)认证,本文介绍如何在已有 服务端认证的情况下,开启客户端验证(双向)认证。
整个云平台运行在 Kubernetes 之上,前端服务通过 ingress 暴露出来,我们使用了开源的 traefik 组件来负责 ingress 的实现,所以在 traefik 上设置客户端认证。
生成证书
下面使用生成自签名证书的方式来配置,如果已经有证书机构签发的服务端和客户端证书,可以忽略这个步骤。
生成 CA
$ openssl req -x509 -sha256 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 356 -nodes -subj '/CN=My Cert Authority'
生成 Server 服务端证书
基于上面生成的 CA 签发 server 证书:
$ openssl req -new -newkey rsa:4096 -keyout server.key -out server.csr -nodes -subj '/CN=mydomain.com'
$ openssl x509 -req -sha256 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
生成 Client 客户端证书
基于上面生成的 CA 签发 client 证书:
$ openssl req -new -newkey rsa:4096 -keyout client.key -out client.csr -nodes -subj '/CN=My Client'
$ openssl x509 -req -sha256 -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 02 -out client.crt