【入門編】Puppetの証明書(SSL/TLS)有効期限切れ・破損時の完全リカバリー手順 – インフラ構成管理(IaC)活用バイブル

こんにちは。インフラの深淵を覗き込み、数多のシステム障害を鎮めてきたSREの視点から、今日はPuppet運用の「最大の鬼門」についてお話しします。

Puppetを触り始めたエンジニアが、運用フェーズで必ず一度は絶望する瞬間――それが「SSL証明書の期限切れ・破損」による通信遮断です。

`SSL_connect returned=1 errno=0 state=error: certificate verify failed`

このエラーログを初めて見たとき、多くの人は「Puppetが壊れた!」と慌てて再インストールを試みます。しかし、それは遠回りです。Puppetの心臓部は証明書による信頼関係(PKI)にあります。この仕組みさえ理解すれば、どんなトラブルも数分で解決できます。

今日は、現場で戦うための「完全リカバリー手順」を伝授しましょう。

—

1. なぜ証明書エラーが起きるのか?

Puppetはマスター(Puppet Server)とエージェント間で、互いの身分を証明するためにSSL証明書を交換します。

  • 有効期限切れ: 自動更新設定のミスや、証明書の有効期間(デフォルト5年)を過ぎた場合。
  • 破損: ファイルシステムの不整合や、誤操作による鍵の削除。
  • 信頼関係の崩壊: マスター側のCA(認証局)とエージェント側の鍵ペアが不一致になった場合。

これらは「信頼の破綻」を意味します。再起動しても直りません。「一度すべてを捨てて、新しい信頼を構築する」のが、最も確実で速い解決策です。

—

2. 現場で震えるほど役立つ!完全リカバリー手順

以下の手順は、障害が発生したエージェントノード上で実行してください。

ステップ1:汚染されたキャッシュを完全消去する

古い証明書や破損した鍵が残っていると、Puppetは新しいリクエストを投げません。まずはクリーンアップです。

Puppetサービスを停止
systemctl stop puppet

SSLディレクトリを特定して削除(環境によりパスが異なる場合があります)
通常は /etc/puppetlabs/puppet/ssl です
rm -rf /etc/puppetlabs/puppet/ssl/

ステップ2:マスター側で古い署名を失効・削除する

マスター側(Puppet Server)は、「以前この名前のノードを認証した」という記憶を持っています。これが残っていると、新しい証明書申請が拒否されます。

マスター側のコンソールで実行:

古いノードの証明書をリストアップ
puppetserver ca list –all

エージェントノードの証明書を失効・削除
puppetserver ca clean –certname <エージェントのホスト名>

ステップ3:新しい信頼を再構築する

エージェント側に戻り、再署名申請を行います。

手動でカタログ取得を試行(これだけで証明書リクエストが飛びます)
puppet agent -t

このとき、`Exiting; no certificate found and waitforcert is disabled` と表示されれば成功です。エージェントは「私は誰にも認められていないので、署名ください」とマスターに泣きついています。

ステップ4:マスター側で署名を許可する

マスター側のコンソールで実行:

申請が届いているか確認
puppetserver ca list

署名を実行(信頼の付与)
puppetserver ca sign –certname <エージェントのホスト名>

ステップ5:最終確認

エージェント側で再度実行し、カタログが正常に適用されることを確認します。

エージェント側で実行
puppet agent -t

`Applied catalog in X.XX seconds` という表示が出れば、無事インフラの平和が戻りました。

—

3. 初心者の方へ:Puppetの「本質」を忘れないで

Puppetを単なる「設定ツール」だと思っていませんか?
Puppetの本質は「宣言的状態の維持」です。

  • 冪等性(べきとうせい): 何度実行しても同じ結果になること。
  • 信頼の連鎖: 証明書は、その信頼を担保するパスポートです。

最初は難しく感じるかもしれませんが、この「証明書管理」さえマスターすれば、あなたはもうただのツール使用者ではなく、「インフラの整合性を守るエンジニア」の入り口に立っています。

最後に

運用で一番怖いのは「エラー」ではなく「なぜエラーになったか分からないこと」です。
今回紹介した手順をメモ帳の片隅に置いておくだけで、深夜の緊急呼び出しに怯える必要はなくなります。

何かあったら、まずは `ssl` ディレクトリを見つめ直してください。そこには、インフラという複雑なシステムの「信頼の履歴」が眠っています。

次は、この証明書を自動更新する `autosign` や `Puppet Bolt` を使った効率化の世界でお会いしましょう。インフラ構築を楽しんでください!

タイトルとURLをコピーしました