MindIE MS当前业务定位是Kubernetes集群内组件,且仅集群管理员有使用权限,相关的TLS通信认证证书采用集群CA签发的证书。
主要需要准备以下四套证书的CA证书、服务证书、私钥、KMC加密口令和KMC工作密钥。
由于Kubernetes集群根CA证书(通常位于/etc/kubernetes/pki/ca.crt目录)不支持CRL吊销,为了保证MindIE MS相关组件在集群管理面的通信安全:
当前要求签发中间CA的subject name中CN=mindiems, O=msgroup;这是MindIE MS服务端唯一认可的中间CA名,且该中间CA由集群根CA签发,管理员确保只用于MindIE MS组件的证书签发。
签发中间CA对于路径没有要求,以下步骤以/home/{用户名称}/cas目录为例进行操作。
cd /home/{用户名称}/cas
export CERT_CN=mindiems export CA_CERT=/etc/kubernetes/pki/ca.crt export CA_KEY=/etc/kubernetes/pki/ca.key mkdir "$CERT_CN" openssl genrsa -aes256 -out "$CERT_CN"/cert.key.pem 4096
参数解释:
根据回显输入私钥口令,然后按回车键。
Enter pass phrase for mindiems/cert.key.pem: Verifying - Enter pass phrase for mindiems/cert.key.pem:
出于安全考虑,以及后续导入证书的要求,用户输入的私钥口令的复杂度必须符合以下要求:
chmod 400 "$CERT_CN"/cert.key.pem
openssl rsa -in "$CERT_CN"/cert.key.pem
根据回显输入2设置的私钥口令,然后按回车键,当显示私钥内容时表示cert.key.pem私钥文件生成成功。
openssl req -new -key "$CERT_CN"/cert.key.pem -out "$CERT_CN"/cert.csr -subj "/CN="$CERT_CN"/O=msgroup"
chmod 600 "$CERT_CN"/cert.csr
openssl req -in "$CERT_CN"/cert.csr -noout -text
vi "$CERT_CN"/cert.conf
[ req ] distinguished_name = req_distinguished_name prompt = no [ v3_req ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign
openssl x509 -req -days 365 -sha256 -extensions v3_req -CA "$CA_CERT" -CAkey "$CA_KEY" -CAcreateserial -in "$CERT_CN"/cert.csr -out "$CERT_CN"/cert.pem -extfile "$CERT_CN"/cert.conf chmod 400 "$CERT_CN"/cert.pem
执行以下命令检查“$CERT_CN”目录下是否存在cert.pem文件,当回显中有subject name: CN=mindiems, O=msgroup信息则证书签发成功。
openssl x509 -in "$CERT_CN"/cert.pem -noout -text
签发完成后,在/home/{用户名称}/cas目录下将生成一个/mindiems目录,/mindiems目录中包含的文件为:cert.conf、cert.csr、cert.key.pem和cert.pem。
签发MindIE MS服务端证书、MindIE MS服务端与kube API-Server通信的客户端证书、MindIE MS客户端msctl与MindIE MS服务端通信证书对于路径没有要求,且签发方法相同。
以下步骤以/home/{用户名称}/cas目录为例签发MindIE MS服务端证书进行操作。
cd /home/{用户名称}/cas
export CERT_CN=msserver export CA_CERT=/home/{用户名称}/cas/mindiems/cert.pem export CA_KEY=/home/{用户名称}/cas/mindiems/cert.key.pem mkdir "$CERT_CN" openssl genrsa -aes256 -out "$CERT_CN"/cert.key.pem 4096
参数解释:
根据回显输入私钥口令,然后按回车键。
Enter pass phrase for msserver/cert.key.pem: Verifying - Enter pass phrase for msserver/cert.key.pem:
出于安全考虑,以及后续导入证书的要求,用户输入的私钥口令的复杂度必须符合以下要求:
chmod 400 "$CERT_CN"/cert.key.pem
openssl rsa -in "$CERT_CN"/cert.key.pem
根据回显输入2设置的私钥口令,然后按回车键,当显示私钥内容时表示私钥文件(cert.key.pem)生成成功。
openssl req -new -key "$CERT_CN"/cert.key.pem -out "$CERT_CN"/cert.csr -subj "/CN="$CERT_CN"/O=msgroup"
chmod 600 "$CERT_CN"/cert.csr
openssl req -in "$CERT_CN"/cert.csr -noout -text
vi "$CERT_CN"/cert.conf
[ req ] distinguished_name = req_distinguished_name prompt = no [ v3_req ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:false keyUsage = critical, digitalSignature, keyCertSign
openssl x509 -req -days 365 -sha256 -extensions v3_req -CA "$CA_CERT" -CAkey "$CA_KEY" -CAcreateserial -in "$CERT_CN"/cert.csr -out "$CERT_CN"/cert.pem -extfile "$CERT_CN"/cert.conf chmod 400 "$CERT_CN"/cert.pem
执行以下命令检查“$CERT_CN”目录下是否存在cert.pem文件,当回显中有subject name: CN=msserver, O=msgroup信息则证书签发成功。
openssl x509 -in "$CERT_CN"/cert.pem -noout -text
签发完成后,在/home/{用户名称}/cas目录下将生成一个/msserver目录,/msserver目录中包含的文件为:cert.conf、cert.csr、cert.key.pem和cert.pem。