ZeroSSL アカウントを使用して ACME 証明書を作成しています。ClusterIssuer に追加した ZeroSSL から EAB クレデンシャルを取得できました。
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: zerossl-prod
spec:
acme:
# The ACME server URL
server: https://acme.zerossl.com/v2/DV90
externalAccountBinding:
keyID: keyidFromZeroSSL
keySecretRef:
name: zerossl-eabsecret
key: value
keyAlgorithm: HS256
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: zerossl-prod
solvers:
- dns01:
route53:
region: eu-central-1
発行者がクラスターに正常にセットアップされました。ここでは問題ありません。
次に、CSR で CertificateRequest を作成すると、Ready 状態になりません。ZeroSSL で証明書が作成されたことを確認できた後でも、CertificateRequest の準備ができていることを cert-manager で確認できません。
これは CertificateRequest にあります。
message: 'Waiting on certificate issuance from order default/mytestcert-4230347456:
"ready"'
reason: Pending
status: "False"
type: Ready
そして、これはログに
E0129 09:27:23.134393 1 controller.go:143] cert-manager/controller/certificaterequests-issuer-acme "msg"="re-queuing item due to error processing" "error"="Operation cannot be fulfilled on certificaterequests.cert-manager.io \"mytestcert\": the object has been modified; please apply your changes to the latest version and try again" "key"="default/mytestcert
I0129 09:27:23.092737 1 sync.go:77] cert-manager/controller/orders "msg"="Creating new ACME order as status.url is not set" "resource_kind"="Order" "resource_name"="mytestcert-4230347456" "resource_namespace"="default"
I0129 09:27:23.092865 1 sync.go:190] cert-manager/controller/orders "msg"="order URL not set, submitting Order to ACME server" "resource_kind"="Order" "resource_name"="mytestcert-4230347456" "resource_namespace"="default"
Route53でも見ることができ、ACMEレコードが作成されました。
*注文の説明には次のように表示されます。
dnsNames:
- subdomain.dev.domain.com
- '*.mytestcert.subdomain.dev.domain.com'
issuerRef:
kind: ClusterIssuer
name: zerossl-prod
status:
authorizations:
- challenges:
- token: Dx6JuVjZvrqOVCt0XnZBA_hZ4b4dsMYWikYdZ7Muovs
type: dns-01
url: https://acme.zerossl.com/v2/DV90/chall/FuZk8FkdUBEA3l3sPtcKBw
identifier: mytestcert.subdomain.dev.domain.com
initialState: pending
url: https://acme.zerossl.com/v2/DV90/authz/M-Xy9ZHTMplpBXjvxpcnPg
wildcard: true
- challenges:
- token: JlYucJq9g8JhcR1PbQA-24AMT0jurB0CWmvytcJccn4
type: http-01
url: https://acme.zerossl.com/v2/DV90/chall/fJPyzw1G82XM6vsPj4pciw
- token: 4Q9KKoyMP0FDX-mmJEGmz4xcI3lmEISvo_izFqsk-I0
type: dns-01
url: https://acme.zerossl.com/v2/DV90/chall/11o2BonMlGgHnJp65oDIDg
identifier: subdomain.dev.domain.com
initialState: pending
url: https://acme.zerossl.com/v2/DV90/authz/cPBHkbnLvEqMZYg0A_BJ_Q
wildcard: false
finalizeURL: https://acme.zerossl.com/v2/DV90/order/ZoWmwVynu0IQ31CC-jy3BA/finalize
state: ready
url: https://acme.zerossl.com/v2/DV90/order/ZoWmwVynu0IQ31CC-jy3BA
※これはChallengeにウォッチャーをつけたときです
mytestcert-322629104-1271033422 pending mytestcert.subdomain.dev.domain.com 73s
mytestcert-322629104-2202102765 pending subdomain.dev.domain.com 73s
mytestcert-322629104-1271033422 valid mytestcert.subdomain.dev.domain.com 100s
mytestcert-322629104-2202102765 valid subdomain.dev.domain.com 100s
mytestcert-322629104-1271033422 valid mytestcert.subdomain.dev.domain.com 111s
mytestcert-322629104-2202102765 valid subdomain.dev.domain.com 111s
mytestcert-322629104-3344217095 mytestcert.subdomain.dev.domain.com 0s
mytestcert-322629104-2697588659 subdomain.dev.domain.com 0s
mytestcert-322629104-1271033422 valid mytestcert.subdomain.dev.domain.com 2m16s
mytestcert-322629104-3344217095 mytestcert.subdomain.dev.domain.com 26s
mytestcert-322629104-2202102765 valid subdomain.dev.domain.com 2m17s
mytestcert-322629104-3344217095 pending mytestcert.subdomain.dev.domain.com 26s
mytestcert-322629104-2697588659 subdomain.dev.domain.com 27s
mytestcert-322629104-2697588659 pending subdomain.dev.domain.com 27s
*これは、ウォッチャーを注文したときです。
mytestcert-322629104 pending 79s
mytestcert-322629104 ready 2m8s
mytestcert-322629104 valid 2m18s
mytestcert-322629104 valid 2m18s
mytestcert-322629104 0s
mytestcert-322629104 pending 0s
mytestcert-322629104 pending 0s
mytestcert-322629104 ready 107s
mytestcert-322629104 valid 117s
mytestcert-322629104 valid 117s
mytestcert-322629104 0s
mytestcert-322629104 pending 0s
mytestcert-322629104 pending 0s
その間、cert-manager は証明書を生成/取得しようとしますが、ZeroSSL で約 4 つの証明書が作成されていることがわかります。ZeroSSL からの証明書のダウンロードが可能で、良さそうです。
ただし、証明書マネージャーから証明書を取得するためにアプリケーション コードに依存しているため、ZeroSSL から証明書を手動でダウンロードすることはできません。