仅作为我个人的笔记,具体步骤参考官方文档
查看当前根证书
curl -k https://vault.com.cn:8206/v1/pki/ca/pem
查看当前证书的中间证书
curl -k https://vault.com.cn:8206/v1/pki_int/ca/pem
创建证书
#删除现有证书
vault delete pki/root
#写入新证书
vault write pki/root/generate/exported common_name="vxx.com.cn" ttl=8760h > root_ca
#查看是否更新成功
curl -k https://vault.com.cn:8206/v1/pki/ca/pem
#删除现有中间证书
vault delete pki_int/root
#写入新的中间证书
vault write pki_int/intermediate/generate/exported common_name="vxx.com.cn Intermediate Authority" ttl=8760h > int_ca
#从int_ca中取出CSR 写入到新文件
> -----BEGIN CERTIFICATE REQUEST-----
> MIICdTCCAV0CAQAwMDEuMCwGA1UEAxMldmdjc2Vydi5jb20uY24gSW50ZXJtZWRp
......
> BK2CfThhxNuxwOBHHCoViVTvFrANizs+LGHbeoOe
> -----END CERTIFICATE REQUEST-----
#签名CSR
vault write -format=json pki/root/sign-intermediate csr=@pki_int.csr format=pem_bundle ttl=8760h | jq -r '.data.certificate' > signed_cert.pem
#写入签名后的中间证书
vault write pki_int/intermediate/set-signed certificate=@signed_cert.pem
这一步比较重要,因为有些时候更新了证书后发现实际请求中并没有更新,是因为没有在vault中切换issuer,这是vault的一个新 feature
#list 所有的issuer id curl --request LIST -k https://vault.com.cn:8206/v1/pki_int/issuers | jq #查看目标issuer id 的值 curl -k 'https://vault.com.cn:8206/v1/pki_int/issuer/0503ef3a-14d0-07ec-94cf-1f87ced76c56/pem' | keytool -printcert #定义issuer 的default: curl --header "X-Vault-Token: hvs.B5JfelhwIuMBWx5Cdd8vAeQu" --request POST --data "@issuers.json" -k "https://vault.com.cn:8206/v1/pki_int/config/issuers" issuers.json example: { "default": "c332dac1-d0db-777f-c81e-954d423182d3" } #删除掉没用的issuer id curl --header "X-Vault-Token: hvs.B5JfelhwIuMBWx5Cdd8vAeQu" --request DELETE -k "https://vault.com.cn:8206/v1/pki_int/issuer/11599cbe-797b-14bf-1a55-e96e222786d6"
后面在vault这一块的证书就已经更新完成了,根据后面你的需求自己进行调整
在我的实际应用中,将中间证书写入到了application中方便后面进行ssl链接,并且联合cert-manager作为了k8s集群中的cluster issuer