Puppet 4証明書を管理する方法

人形チートシート

Puppetは、システム管理者がサーバーインフラストラクチャのプロビジョニング、構成、および管理を自動化するのに役立つ構成管理ツールです。 通常、マスターサーバーが複数のエージェントノードの構成を管理するマスター/エージェントモードで実行されます。 マスターとエージェント間の通信は、クライアントが検証したHTTPSで許可および保護されます。これには、有効な識別SSL証明書が必要です。 Puppetマスターは、これらの証明書を管理するための認証局として機能します。

この虎の巻スタイルのガイドは、 `+ puppet cert +`コマンドを使用してこれらの証明書を管理するためのクイックリファレンスを提供します。

このガイドの使用方法:

  • このガイドは、自己完結型のコマンドラインスニペットを含むチートシート形式です。

  • 完了しようとしているタスクに関連するセクションにジャンプします。

証明書リクエストのリスト

Puppet agentサーバーがオンラインになったときに、すべてが適切に構成されている場合、サーバーは証明書署名要求をPuppet masterに提示します。 これらのリクエストは、 `+ puppet cert list`コマンドで確認できます。

署名済みおよび未署名のすべてのリクエストを一覧表示する

署名済みおよび未署名のすべての証明書リクエストを表示するには、次のように `+-all +`フラグを使用します。

sudo puppet cert list --all

署名されたリクエストの前にはプラス( +)が付き、署名されていないリクエストはありません。 以下の出力では、 `+ host2.example.com `は署名されていませんが、 ` host1 `と ` puppet +`は署名されています:

Output:+ "host1.example.com"    (SHA256) 51:D8:7A:EB:40:66:74:FD:0A:03:5D:35:AA:4D:B3:FA:35:99:C2:A8:C9:01:83:34:F6:16:60:BB:46:1F:33:3F
 "host2.example.com"   (SHA256) 3C:A9:96:3A:8D:24:5F:25:DB:FF:67:B5:22:B1:46:D9:89:F1:75:EC:BA:F2:D6:87:70:0C:59:97:11:11:01:E3
+ "puppet.example.com" (SHA256) 12:32:47:18:D1:12:85:A6:EA:D4:51:9C:24:96:E2:8A:51:41:8D:EB:E8:7C:EB:47:94:B0:8B:16:16:51:6A:D1 (alt names: "DNS:puppet", "DNS:puppet.localdomain", "DNS:puppet.example.com")

署名されていないリクエストを一覧表示する

Puppet Serverがエージェントノードと通信して制御できるようになる前に、特定のエージェントノードの証明書に署名する必要があります。 署名されていないリクエストを確認するには、Puppetサーバーから `+ puppet cert list`コマンドを使用します:

sudo puppet cert list

これは、署名されていないリクエストのみをリストします。 出力は次のようになります。

Output: "host2.example.com" (SHA256) 9D:49:DE:46:1C:0F:40:19:9B:55:FC:97:69:E9:2B:C4:93:D8:A6:3C:B8:AB:CB:DD:E6:F5:A0:9C:37:C8:66:A0

プラス記号( +)がない場合、これらの証明書はまだ署名されていません。 署名されていない要求がない場合、出力なしでコマンドプロンプトに戻ります。

証明書リクエストの署名

特定のリクエストに署名する

単一の証明書リクエストに署名するには、 `+ puppet cert sign +`コマンドを使用し、証明書リクエストに表示される1つ以上のホスト名を使用します。

puppet cert sign

次の例のような出力は、証明書要求が署名されたことを示しています。

Output:Notice: Signed certificate request for
Notice: Removing file Puppet::SSL::CertificateRequest  at '/etc/puppetlabs/puppet/ssl/ca/requests/.pem'

すべてのリクエストに署名する

`+-all +`フラグを追加することで、すべてのリクエストに署名できます:

sudo puppet cert sign --all

証明書の失効

最終的には、Puppetからホストを削除するか、ホストを再構築してから追加し直すことができます。 この場合、ホストの証明書をPuppetマスターから失効させる必要があります。 これを行うには、 `+ clean +`アクションを使用します:

特定の証明書を取り消す

`+ puppet cert clean +`で1つ以上の特定の証明書を取り消すには、証明書に表示される1つ以上のホスト名を指定します。

sudo puppet cert clean

証明書を失効させた後、失効を有効にするにはhttps://docs.puppet.com/puppetserver/latest/restarting.html[Puppetマスターを再起動]する必要があります。

sudo service puppetserver reload

次にエージェントノードで「+ puppet agent」が実行されると、新しい証明書署名要求がPuppetマスターに送信され、「+ puppet cert sign」で署名できます。 次のようにして、すぐにリクエストをトリガーできます。

sudo puppet agent --test

複数の証明書を取り消す

Puppetでは、「+-all +」フラグを使用して証明書を一括削除することはできませんが、ホスト名をスペースで区切って指定することにより、複数の証明書を一度に取り消すことができます。

sudo puppet cert clean   . . .

証明書を失効させた後、失効を有効にするにはhttps://docs.puppet.com/puppetserver/latest/restarting.html[Puppetマスターを再起動]する必要があります。

sudo service puppetserver reload

結論

このガイドでは、Puppetバージョン4.xでPuppet証明書を管理するための一般的なコマンドをいくつか取り上げています。 + puppet cert +`で使用できる他のアクションとフラグがあります。 包括的なリストについては、https://docs.puppet.com/puppet/latest/man/cert.html [+ puppet cert +` manページ]を参照してください。