1.11.1. 证书

在使用客户端证书认证的场景下,你可以通过 easyrsa、openssl 或 cfssl 等工具以手工方式生成证书。

1.11.1.1. openssl

生成一个2048位的ca.key 文件

openssl genrsa -out ca.key 2048

在ca.key的基础上,生成证书文件

openssl req -x509 -new -nodes -key ca.key -subj "/CN=${MASTER_IP}" -days 10000 -out ca.crt

生成一个 2048 位的 server.key 文件:

openssl genrsa -out server.key 2048

创建一个用于生成证书签名请求(CSR)的配置文件。 保存文件(例如:csr.conf)前,记得用真实值替换掉尖括号中的值(例如:<MASTER_IP>)。

[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C = <country>
ST = <state>
L = <city>
O = <organization>
OU = <organization unit>
CN = <MASTER_IP>

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster
DNS.5 = kubernetes.default.svc.cluster.local
IP.1 = <MASTER_IP>
IP.2 = <MASTER_CLUSTER_IP>

[ v3_ext ]
authorityKeyIdentifier=keyid,issuer:always
basicConstraints=CA:FALSE
keyUsage=keyEncipherment,dataEncipherment
extendedKeyUsage=serverAuth,clientAuth
subjectAltName=@alt_names

基于上面的配置文件生成证书签名请求:

openssl req -new -key server.key -out server.csr -config csr.conf

基于 ca.key、ca.key 和 server.csr 等三个文件生成服务端证书:

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \
-CAcreateserial -out server.crt -days 10000 \
-extensions v3_ext -extfile csr.conf

查看证书签名请求

openssl req  -noout -text -in ./server.csr

查看证书: .. code-block:: bash

openssl x509 -noout -text -in ./server.crt