Kubernetesを使用したcert-managerとDigiCert ACMEサービスの設定方法
cert-manager v1.1 以降と互換性があります。
重要:2024年1月30日にACME URLを更新しました。ログイン情報作成には、下記URLをご利用ください。
新しいURL:https://one.digicert.com/mpki/api/v1/acme/v2/directory
以前のURL:https://acme.digicert.com/v2/acme/directory/ |
- CertCentral から ACME ディレクトリ URL を作成します。
- .ACME ディレクトリ URL、HMAC キー、KID 値をコピーして安全な場所に保存します。
- cert-manager の “namespace”を作成します。
kubectl create namespace <namespace> |
- EAB-HMAC用のcert-managerで”secret”を作成します
kubectl create secret generic <eab_secret_name> --from-literal secret=<eab_hmac> -n <namespace> |
- cert-manager に Issuer 追加のためのパラメータの値を指定する YAML 構成ファイルを作成します。
#test-cert-manager-acme.yaml
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: <issuer_name>
namespace: <namespace>
spec:
acme:
email: <email_address>
#New enrolments only
server: https://one.digicert.com/mpki/api/v1/acme/v2/directory
externalAccountBinding:
keyID: <eab_kid>
keySecretRef:
name: <eab_secret_name>
key: secret
keyAlgorithm: HS256
privateKeySecretRef:
name: <account_private_key_name>
solvers:
- http01:
ingress:
class: nginx
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: <certificate_name>
namespace: <namespace>
spec:
dnsNames:
- <certificate_common_name>
secretName: <certificate_private_key_name>
issuerRef:
name: <issuer_name>
|
- kubectl apply コマンドを実行し、DigiCert ACME サーバーから証明書をリクエストします。
kubectl apply -f test-cert-manager-acme.yaml |
- kubectl describe コマンドを実行して、ACME アカウントが DigiCert ACME サーバーに登録されていることを確認します。
kubectl describe issuer -n <namespace> |
出力は次のようになります。
Name: <issuer_name>
Namespace: <namespace>
Labels: <none>
Annotations: <none>
API Version: cert-manager.io/v1
Kind: Issuer
Metadata:
Creation Timestamp: 2020-12-17T12:16:47Z
Generation: 1
Managed Fields:
API Version: cert-manager.io/v1alpha2
Fields Type: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.:
f:kubectl.kubernetes.io/last-applied-configuration:
f:spec:
.:
f:acme:
.:
f:email:
f:externalAccountBinding:
.:
f:keyAlgorithm:
f:keyID:
f:keySecretRef:
.:
f:key:
f:name:
f:privateKeySecretRef:
.:
f:name:
f:server:
f:skipTLSVerify:
f:solvers:
Manager: kubectl-client-side-apply
Operation: Update
Time: 2020-12-17T12:16:47Z
API Version: cert-manager.io/v1
Fields Type: FieldsV1
fieldsV1:
f:status:
f:acme:
.:
f:lastRegisteredEmail:
f:uri:
f:conditions:
Manager: controller
Operation: Update
Time: 2020-12-17T12:16:49Z
Resource Version: 421519
Self Link: /apis/cert-manager.io/v1/namespaces/acme-cert-manager-test/issuers/test-acme
UID: 0a6f67ac-30d9-4e97-876f-4773b2b0a21e
Spec:
Acme:
Email: <email>
External Account Binding:
Key Algorithm: HS256
Key ID: <eab_kid>
Key Secret Ref:
Key: secret
Name: <eab_secret_name>
Preferred Chain:
Private Key Secret Ref:
Name: <account_private_key_name>
Server: https://one.digicert.com/mpki/api/v1/acme/v2/directory
Skip TLS Verify: true
Solvers:
http01:
Ingress:
Class: nginx
Status:
Acme:
Last Registered Email: <email>
Uri: <unique_account_url>
Conditions:
Last Transition Time: 2020-12-17T12:16:49Z
Message: The ACME account was registered with the ACME server
Reason: ACMEAccountRegistered
Status: True
Type: Ready
Events:
|
- ACME アカウントの登録後、以下のコマンドを実行します。
- 証明書のリクエストステータス確認のためのコマンドは下記になります。:
kubectl describe certificaterequest -n <namespace> |
出力は次のようになります。
#certificaterequest output
Conditions:
Last Transition Time: 2020-12-17T17:29:27Z
Message: Certificate fetched from issuer successfully
Reason: Issued
Status: True
Type: Ready
Events: <none>
|
- つぎに証明書ステータス確認のためのコマンドは下記になります。:
kubectl describe certificate -n <namespace> |
出力は次のようになります。
#certificate output
Spec:
Dns Names:
<certificate_common_name>
Issuer Ref:
Name: <issuer_name>
Secret Name: <certificate_secret_name>
Status:
Conditions:
Last Transition Time: 2020-12-17T17:29:27Z
Message: Certificate is up to date and has not expired
Reason: Ready
Status: True
Type: Ready
Not After: 2021-12-21T23:59:59Z
Not Before: 2020-12-17T00:00:00Z
Renewal Time: 2021-11-21T23:59:59Z
Revision: 1
Events:
|
注意: ACME ディレクトリ URL を複数の発行に使用する場合は、発行者の Kind 属性を ClusterIssuer に置き換え、metadata:namespace 属性の削除をお願いします。
またnamespaceごとに発行者を統一しておくことをお勧めします。
ACMEによる自動化に関連したよくある質問 もご参照ください。