Puppet4証明書を管理する方法
人形のチートシート
Puppetは、システム管理者がサーバーインフラストラクチャのプロビジョニング、構成、および管理を自動化するのに役立つ構成管理ツールです。 通常、マスターサーバーが複数のエージェントノードの構成を管理するマスター/エージェントモードで実行されます。 マスターとエージェント間の通信は、クライアントが検証したHTTPSで許可および保護されます。これには、有効な識別SSL証明書が必要です。 Puppetマスターは、これらの証明書を管理するための認証局として機能します。
このチートシートスタイルガイドは、puppet cert
コマンドを使用してこれらの証明書を管理するためのクイックリファレンスを提供します。
このガイドの使用方法:
- このガイドは、自己完結型のコマンドラインスニペットを含むチートシート形式です。
- 完了しようとしているタスクに関連するセクションにジャンプします。
注: puppet
がパスにない場合は、以下のコマンドでpuppet
へのフルパスを指定する必要があります。
証明書リクエストの一覧表示
Puppetエージェントサーバーがオンラインになると、すべてが適切に構成されている場合、サーバーはPuppetマスターに証明書署名要求を提示します。 これらのリクエストは、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 host2.example.com
次の例のような出力は、証明書要求が署名されていることを示しています。
Output:Notice: Signed certificate request for host1.example.com Notice: Removing file Puppet::SSL::CertificateRequest host2.example.com at '/etc/puppetlabs/puppet/ssl/ca/requests/host1.example.com.pem'
すべてのリクエストに署名する
--all
フラグを追加することで、すべてのリクエストに署名できます。
sudo puppet cert sign --all
証明書の取り消し
最終的には、Puppetからホストを削除するか、ホストを再構築してから再度追加することをお勧めします。 この場合、Puppetマスターからホストの証明書を取り消す必要があります。 これを行うには、clean
アクションを使用します。
注:次のコマンドで証明書を取り消す前に、バックアップ/etc/puppetlabs/puppet/ssl/
ディレクトリを作成してください。
sudo cp -R /etc/puppetlabs/puppet/ssl/ /root/
特定の証明書を取り消す
puppet cert clean
を使用して、証明書に表示されている1つ以上のホスト名を指定することにより、1つ以上の特定の証明書を取り消すことができます。
sudo puppet cert clean host1.example.com
証明書を失効させた後、失効を有効にするには、Puppetマスターを再起動する必要があります。
sudo service puppetserver reload
次回puppet agent
がエージェントノードで実行されると、puppet cert sign
で署名できる新しい証明書署名要求がPuppetマスターに送信されます。 次の方法でリクエストをすぐにトリガーできます。
sudo puppet agent --test
複数の証明書を取り消す
Puppetでは、--all
フラグが付いた証明書の一括削除は許可されていませんが、スペースで区切ってホスト名を指定することにより、複数の証明書を一度に取り消すことができます。
sudo puppet cert clean host1.example.com host2.example.com . . .
証明書を失効させた後、失効を有効にするには、Puppetマスターを再起動する必要があります。
sudo service puppetserver reload
結論
このガイドでは、Puppetバージョン4.xでPuppet証明書を管理するための一般的なコマンドのいくつかについて説明します。 puppet cert
で使用できる他のアクションとフラグがあります。 包括的なリストについては、puppetcertのマニュアルページを参照してください。