Skip to main content

ACME ベースの登録

ACMEv2 プロトコルを使用して DigiCert​​®​​ Trust Lifecycle Manager から Linux ベースの Chef ノードに証明書を取得するには、以下の手順を実行します。

この統合に関係するのは以下の Chef コンポーネントです。

  • Chef ワークステーション: Trust Lifecycle Manager からその ACME サービスを介して証明書を要求するカスタムの Chef クックブックを設定するローカル開発システム。

  • Chef サーバー: 本番環境の Chef ノードで使用するためにカスタム Chef クックブックをアップロードする中央ハブ。

  • Chef ノード: Chef サーバーでカスタムクックブックを使用して Trust Lifecycle Manager から証明書を要求するクライアントシステム。

    • 証明書要求を送信し、生成された証明書ファイルをダウンロードするために、各 Chef ノードには Certbot のようなサードパーティ ACME クライアントが必要です。

    • デジサートは、Linux ベースの Chef ノード用に統合の設定を支援するサンプルファイルを提供しています。カスタムの Chef クックブックの一部として各ノードに Certbot ACME クライアントを自動的にインストールするオプションも含まれています。

警告

このページで示す手順では Linux ベースの Chef 展開を想定しており、オープンソースの Snap パッケージマネージャーを使用して各ノードに Certbot ACME クライアントをインストールします。Linux 以外の展開では、追加のカスタマイズも必要になる可能性があります。

OS に依存しない Chef 統合ソリューションについては、API ベースの登録の手順を参照してください。

開始する前に

Trust Lifecycle Manager では、登録方法として 3rd-party ACME client を指定した証明書プロファイルが必要です。このプロファイルは一般的な証明書プロパティを定義し、必要な ACME URL と外部アカウントバインディング(EAB)クレデンシャルを次のように提供します。

  • ACME ディレクトリの URL: Trust Lifecycle Manager から証明書を要求する ACME サーバーの URL。

  • 鍵識別子(KID): Trust Lifecycle Manager アカウントで証明書プロファイルを識別します。

  • HMAC キー: 証明書要求中にアカウントの鍵を暗号化し、認証する際に使用されます。

統合ワークフロー

Chef 統合パッケージをダウンロードし、以下のサンプルファイルを取得します。

  • recipe/default.rb: ACME を介してデジサートから証明書を要求するサンプルのレシピファイル。

  • attributes/default.rb: DigiCert ACME クレデンシャルを設定するサンプルの属性ファイル。

注記

ダウンロード可能なサンプルファイルは、[コネクタの追加]>[インフラの自動化]>[Chef]を選択して、[Trust Lifecycle ManagerIntegrations > Connectors]ページから入手することもできます。

サンプルファイルを使用して、Trust Lifecycle Manager からその ACME サービスを介して証明書を要求するカスタムの Chef クックブックを作成します。

Chef ワークステーションでクックブックを設定するには:

  1. 以下のコマンドを実行し、クックブックのフレンドリ名を最後の引数として指定して、カスタムクックブックを作成します。

    chef generate cookbook <custom_cookbook_name>
  2. サンプルの recipe/default.rb ファイルをカスタムクックブックの recipes サブディレクトリにコピーし、そこでデフォルトの default.rb ファイルを置き換えます。

  3. サンプルの attributes/default.rb ファイルをカスタムクックブックの attributes サブディレクトリにコピーし、そこでデフォルトの default.rb ファイルを置き換えます。

  4. コピーした attributes/default.rb ファイルをカスタムクックブックで更新し、以下の各パラメータに値を指定します:

    • default['certbot']['eab_kid']: Trust Lifecycle Manager で対象となる証明書プロファイルの ACME EAB 鍵識別子(KID)。

    • default['certbot']['eab_hmac_key']: 証明書プロファイルの ACME EAB HMAC キー。

    • default['certbot']['acme_server_url']: 証明書プロファイル用の ACME ディレクトリ URL。

    • default['certbot']['domain1']: 発行する証明書のコモンネーム。

    ファイルでは、パラメータ値を一重引用符で囲んでください。例:

    default['certbot']['eab_kid'] = 'ZZ5ZZ5_yZabcdeFGHij_KLmnoP_a33sNvWwHHnGD3E'
    default['certbot']['eab_hmac_key'] = 'Z5ZJ3JJJdZaBcDeFgHIJklMn3OoPqRsT3UvWxYZAbCDEfghI3MMJ3KLIdEFGxMMnnJjkeNjliZddwABC3DEFzZA'
    default['certbot']['acme_server_url'] = 'https://one.digicert.com/mpki/api/v1/acme/v2/directory'
    default['certbot']['domain1'] = 'my-app.example.com'
  5. 以下のコマンドを使用して、カスタムクックブックをアクティブな Chef サーバーにアップロードします。最後の引数にはカスタムクックブック名を指定します。

    knife cookbook upload <custom_cookbook_name>

Chef サーバーにカスタム Chef クックブックが配置されると、Trust Lifecycle Manager から Chef ノード用の証明書を要求できるようになります。

カスタムの ACME ベースの証明書要求レシピを含めて Chef サーバーからクックブックを実行するには、Chef ノードで以下のコマンドを使用します。

sudo chef-client

次の手順

証明書要求に成功すると、該当するサードパーティ ACME クライアントディレクトリの Chef ノードに証明書ファイルが追加されます。Certbot の場合、証明書ファイルはデフォルトで /etc/letsencrypt/live ディレクトリにダウンロードされます。

証明書は Trust Lifecycle Manager[インベントリ]ビューにも表示されるので、それを監視して通知を設定することができます。