我创建了两个文件,一个文件用于ClusterIssuer,第二个文件用于证书。
我的域是一个example.com,我需要使用通配符*.testing.example.com
创建一个新的子域,并且我已经在Route53中创建了一个名为*.testing.example.com
的条目,其条目为A并映射为nlb。
下面是我的个人资料,这对我有好处,但是我遇到错误“ msg” =“传播检查失败”“ error” =“ \” testing.example.com \“的DNS记录尚未传播“
ClusterIssuer.yaml
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
# The ACME server URL
server: https://acme-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: devops@example.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
# example: cross-account zone management for example.com
# this solver uses ambient credentials (i.e. inferred from the environment or EC2 Metadata Service)
# to assume a role in a different account
- selector:
dnsZones:
- "example.com"
dns01:
route53:
region: ap-south-1
hostedZoneID: 71MYVttggee
role: arn:aws:iam::123456:role/dns-manager
Certificate.yaml
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: example-cert
spec:
secretName: acme-crt
issuerRef:
kind: ClusterIssuer
name: letsencrypt-prod
commonName: testing.example.com
dnsNames:
- '*.testing.example.com'
acme:
config:
- dns01:
provider: route53
domains:
- '*.testing.example.com'
答案 0 :(得分:0)
您所拥有的是正确的,您只需要等待DNS传播,以便LetsEncrypt可以检查验证记录。
答案 1 :(得分:0)
您必须使用 DNS-01 的方法进行身份验证。
您可以使用 issuer
https://cert-manager.io/docs/configuration/acme/dns01/
但是,您还必须为证书创建另一个 YAML
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: le-crt
spec:
secretName: tls-secret
issuerRef:
kind: Issuer
name: letsencrypt-prod
commonName: "*.example.in"
dnsNames:
- "*.example.in"
上面的 yaml 证书将指向您创建的颁发者,当您获得证书时,它将被存储到 kubernetes 机密名称中:tls-secret
您可以在 ingress
上注入或使用此机密。
此外,如果您遇到 CAA
记录的 403 错误,请先在 DNS zone
中添加 CAA 记录,同时我们添加 A
或 {{ 1}} 条记录。