Skip to main content

API ベースの登録

Trust Lifecycle Manager REST API を使用して DigiCert​​®​​ Trust Lifecycle Manager から Puppet 環境に証明書を取得するには、以下の手順を実行します。発行された証明書は、PEM エンコードされた X.509 形式で API レスポンスに返されます。

開始する前に

Trust Lifecycle Manager へのアクセス権と、Manager または User and certificate managerユーザーロールを持つ、アクティブな DigiCert ONE ユーザーまたはサービスユーザーの API トークンが必要です。詳細は「API アクセス」を参照してください。

Trust Lifecycle Manager では、登録方法として REST API、認証方法として 3rd Party app を指定された証明書プロファイルが必要です。プロファイル詳細ページから、統合を設定する際に使用する以下のパラメータを収集します。

  • プロファイル ID: プロファイル詳細ページの GUID フィールド、または DigiCert ONE URL から取得します。

  • REST API エンドポイント(API KEY 認証): プロファイル詳細ページの上部にある REST URL ドロップダウンからコピーします。

統合ワークフロー

Puppet を使用して API ベースの証明書の登録プロセスを開始するには、提供されているサンプルファイルをダウンロードして解凍し、それを適切な Puppet 環境ディレクトリに移動する必要があります。このように設定すると、Puppet は設定ファイルとモジュールを正しく見つけて使用できるようになります。

  1. Puppet 統合パッケージをダウンロードして、以下の環境ファイルを取得します。

    • production/data/certbot.yaml: Certbot 設定のキーと値のペア。メール、ドメイン、ACME サーバー詳細などが含まれ、データ検索のとき Hiera によって使用されます。

    • production/environment.conf: 本番環境に向けた環境固有の設定、たとえばモジュールパスやマニフェストの場所などが定義されます。

    • production/hiera.yaml: Puppet の階層型データ検索ツールである Hiera を設定し、設定データを解決するためのデータソースと階層を指定します。

    • production/manifests/site.pp: 本番環境のメインのマニフェストファイルです。ノード固有の設定を定義し、必要なクラスを含んでいます。

    • production/modules/certbot/manifests/init.pp: Certbot のインストールと証明書を管理するためのリソース宣言と設定など、Certbot クラスの定義が含まれています。

  2. パッケージの内容を Puppet 環境ディレクトリにコピーします。

    sudo -u puppet cp -r puppet-restapi-integration/production/* /etc/puppetlabs/code/environments/production/

    注記

    puppet ユーザーとしてファイルをコピーすると、ファイルの所有権と権限が確実に正しく設定されます。

    • puppet ユーザーとしてファイルをコピーしなかった場合は、ルート(sudo)としてコピーしてから、適切なアクセス権を保証するために所有権と権限を調整します。

      sudo chown -R puppet:puppet /etc/puppetlabs/code/environments/production/

このステップでは、Certbot を使用して SSL/TLS 証明書を要求し管理するための環境を設定するうえで必要な Puppet マニフェストと Hiera データを設定します。

  1. Puppet 環境ディレクトリに移動します。

    cd /etc/puppetlabs/code/environments/production
  2. hiera.yaml ファイルを更新し、データファイルとして certbot.yaml を指定します。変更後の hiera.yaml は以下のようになります。

    バージョン: 5
    defaults:
    datadir: data
    data_hash: yaml_data
    
    hierarchy:
    - name: "Certbot"
        path: "certbot.yaml"
  3. data ディレクトリで certbot.yaml ファイルを開き、以下のキー/値ペアを更新します。

    • common::common_csr_file: CSR を保存する必要があるパスを指定します。

    • common::common_private_key_file: 秘密鍵を保存する必要があるパスを指定します。

    • common::common_country: 証明書サブジェクトの国名を指定します。

    • common::common_state: 証明書サブジェクトの州名を指定します。

    • common::common_locality: 証明書サブジェクトの地域名を指定します。

    • common::common_organization: 証明書サブジェクトの組織名を指定します。

    • common::common_common_name: 証明書のコモンネーム(ドメイン)を指定します。

    • common::common_api_url: Trust Lifecycle Manager によって提供される API URL を指定します。

    • common::common_api_key: Trust Lifecycle Manager によって提供される API キーを指定します。

    • common::common_profile_id: Trust Lifecycle Manager プロファイルからのプロファイル ID を指定します。

    • common::common_seat_id: シート ID を指定します。

重要

Puppet 環境の manifests ディレクトリにある site.pp ファイルは、ワイルドカード(default)ノードブロックを使用します。つまり、certbot クラスがデフォルトですべてのノードに適用されるということです。

Puppet サーバーで Trust Lifecycle Manager から証明書を要求するには、以下のコマンドを実行します。

sudo /opt/puppetlabs/bin/puppet apply /etc/puppetlabs/code/environments/production/manifests/site.pp

このコマンドは、以下の処理を実行します。

  • site.pp マニフェストを読み込みます。これには、certbot クラスが含まれます。

  • init.pp から定義された certbot クラスで定義されている設定を適用してから、次のようにします。

    • 必要なパッケージ(aptitudedpkg-devopenssljq)をインストールします。

    • 必須の gem(msgpackpson)をインストールします。

    • 証明書署名要求(CSR)を生成し、秘密鍵を保存します。

    • 指定された API エンドポイントに CSR を送信し、証明書を発行します。

次の手順

要求された証明書が、PEM エンコードされた X.509 形式で応答として返されます。CSR の生成と API の要求のログを確認し、正常に完了したことを確認してください。ログは /tmp/ にあります。

  • CSR 生成ログ: /tmp/csr_generation.log

  • API 要求ログ: /tmp/csr_request.log

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

注記

Certbot は、証明書の有効期限が切れる前に自動的に更新を試みます。自動更新を処理するために、必要な cron ジョブまたは systemd タイマーが設定されていることを確認します。通常は Certbot のデフォルトのインストールによって処理されますが、正しく設定されていることを確認してください。