DigiCert KnowledgeBase - Technical Support-hero

Knowledge Base

Kubernetesを使用したcert-managerとDigiCert ACMEサービスの設定方法

Solution ID : SO040121142532
Last Modified : 2025/09/12

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/

 

  1. CertCentral から ACME ディレクトリ URL を作成します。
  2. .ACME ディレクトリ URL、HMAC キー、KID 値をコピーして安全な場所に保存します。
  3. cert-manager の “namespace”を作成します。
    kubectl create namespace <namespace>
  4. EAB-HMAC用のcert-managerで”secret”を作成します
    kubectl create secret generic <eab_secret_name> --from-literal secret=<eab_hmac> -n <namespace>
  5. 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>

     

  6. kubectl apply コマンドを実行し、DigiCert ACME サーバーから証明書をリクエストします。
    kubectl apply -f test-cert-manager-acme.yaml
  7. 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:  


  8. 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による自動化に関連したよくある質問 もご参照ください。