下午好,
尝试使用自签名 CA 使证书管理器可行。我使用以下方式安装了证书管理器:
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.14.5 --set installCRFs=true
从这里我尝试通过运行以下命令来配置它:
#Create self-signed issuer
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: selfsigned-issuer
spec:
selfSigned: {}
---
#Create CA Certificate
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-selfsigned-ca
namespace: cert-manager
spec:
isCA: true
commonName: custom-selfsigned-ca
secretName: root-secret
subject:
organizations:
- ExampleCompany
countries:
- US
privateKey:
algorithm: ECDSA
size: 256
issuerRef:
name: selfsigned-issuer
kind: ClusterIssuer
group: cert-manager.io
---
#Create clusterIssuer
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: my-ca-issuer
spec:
ca:
secretName: root-secret
此时后端集群管理器组件全部显示为 READY:
NAME READY AGE
selfsigned-issuer True 1D
my-ca-issuer True 1D
然后我将以下注释添加到我的入口:
cert-manager.io/cluster-issuer: my-ca-issuer
但是当我部署时,我没有看到创建的与我的 tls.secretName 一致的证书,并且入口仍然显示开箱即用的默认 Traefik 证书。有什么想法从使用证书管理器的自签名角度可能缺少什么?谢谢!
但是,您当前使用 ingress 通过证书管理器设置自签名证书颁发机构的配置包含一些潜在问题。
虽然您的证书资源中包含 CA 证书,但其颁发可能存在问题。
引用根密钥的集群颁发者可能未正确配置为使用 CA 证书来签署已颁发的证书。
以下是可能出现的问题以及如何修复它:
证书颁发:
查看 kubectl 描述集群颁发者自签名颁发者以查看自签名颁发者颁发证书时是否遇到任何错误。
确保 my-selfsigned- ca 证书资源中的 CA Flag 设置为 true,以便将其识别为 CA 证书
秘密用法:
在 my-ca-issuer 的集群颁发者资源中,ca:部分指定 SecretName:root-secret。这引用了包含 CA 证书的机密。但是,它缺少 certFile 字段,该字段告诉 certmanager 要使用密钥中的哪个证书。
在我的 ca 颁发者的 ClusterIssuer 资源的 ca: 部分中添加 certFile 字段。
确保 root-secret 确实拥有您通过我的自签名 ca 证书资源创建的 CA 证书和私钥
您应该确认您的入口资源注释是否正确:cert-manager。 io/集群发行者:my-ca-发行者
修改后,我们需要重新部署入口,以便您能够检查这一点:
我的自签名 -ca 的证书应通过运行命令 kubectl 描述证书显示为就绪状态。
与入口相关的机密应包含由您的自签名 CA 签署的已隐藏的 TLS 证书。
通过确保正确的秘密使用并解决任何潜在的相关问题,您将能够使用自签名 CA 通过证书管理器向您的入口资源授予 TLS 证书。
请参阅此故障排除步骤了解更多信息