通过cert-manager能否单独获取CA公钥?
关于通过cert-manager获取CA公钥的解决方案
完全可以通过cert-manager单独获取签发证书的CA公钥,结合你使用Google CAS作为CA的场景,可通过以下两种方式实现:
方案一:从cert-manager生成的证书Secret中直接提取
cert-manager为正常签发的Certificate资源生成对应Secret时,默认会在Secret中附加ca.crt字段,存储PEM格式的CA证书(包含完整CA公钥信息),绝大多数服务做证书签发校验时直接使用该CA证书即可,无需单独提取公钥。
操作步骤如下:
- 先确认你要校验的证书对应的Certificate资源配置的
spec.secretName字段值,即为对应Secret的名称 - 执行kubectl命令提取CA证书文件:
kubectl get secret <替换为你的secret名称> -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt - 如果需要单独提取公钥文件,可通过openssl命令处理拿到的ca.crt:
openssl x509 -in ca.crt -pubkey -noout > ca_pubkey.pem
注意事项
如果你的Certificate资源的spec中配置了disableCA: true,生成的Secret会自动省略ca.crt字段,删除该配置后重新触发证书签发即可恢复该字段。
方案二:从Google CAS Issuer配置中获取
如果你使用的是GoogleCASIssuer/GoogleCASClusterIssuer资源对接Google CAS,对应CA的公钥证书也可以直接从Google CAS控制台导出,和从cert-manager Secret中提取的内容完全一致。
内容的提问来源于stack exchange,提问作者RandomQuests
相关产品推荐
相关产品推荐

