使用cert-manager对接Let's Encrypt签发证书后浏览器显示cert-manager.local的问题咨询
cert-manager对接Let's Encrypt签发证书后浏览器显示cert-manager.local的问题咨询
嘿,我看了你遇到的问题——用cert-manager对接Let's Encrypt签了证书,但浏览器却显示cert-manager.local的证书,结合你给出的配置和命令输出,咱们来一步步梳理排查:
首先先确认下你目前的配置状态:
- 你已经创建了Let's Encrypt staging环境的Issuer,配置如下:
apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: letsencrypt-staging spec: acme: # The ACME server URL server: https://acme-staging-v02.api.letsencrypt.org/directory # Email address used for ACME registration email: tuanhuynh.contact@gmail.com # Name of a secret used to store the ACME account private key privateKeySecretRef: name: letsencrypt-staging # Enable the HTTP-01 challenge provider solvers: - http01: ingress: ingressClassName: haproxy
- 执行
kubectl get certificate -o wide后,证书状态显示正常,已经成功签发:
NAME READY SECRET ISSUER STATUS AGE dallasoft-nginx-tls True dallasoft-nginx-tls letsencrypt-staging Certificate is up to date and has not expired 10m
- 但你的Ingress配置里
cert-manager.io/issuer注解内容不完整,只写了"...
接下来分析问题:浏览器显示cert-manager.local证书,大概率是因为Ingress配置存在缺失,导致cert-manager没有正确关联你的实际域名去签发对应证书, fallback到了默认的测试证书。给你几个具体的排查和解决步骤:
- 补全Ingress的Issuer注解:把Ingress里的
cert-manager.io/issuer注解值补全为你创建的Issuer名称letsencrypt-staging,也就是改成:cert-manager.io/issuer: "letsencrypt-staging" - 检查Ingress的TLS配置:确保Ingress的
spec.tls块里明确指定了你要使用的实际域名,并且和secretName对应上已有的证书secret,示例如下:spec: tls: - hosts: - your-real-domain.com # 替换成你实际的域名 secretName: dallasoft-nginx-tls - 对齐Ingress规则的Host:确认Ingress的
spec.rules里的host字段和TLS配置里的域名完全一致,保证请求能正确匹配到对应的证书。 - 触发证书重新签发:你可以删除现有证书让cert-manager重新生成对应域名的证书,执行命令:
之后cert-manager会根据正确的Ingress配置重新为你的实际域名签发证书。kubectl delete certificate dallasoft-nginx-tls
备注:内容来源于stack exchange,提问作者Tuan Huynh
相关产品推荐
相关产品推荐

