PR

Caddyの証明書期限切れに気づける?XServer VPSで残日数・ACME失敗ログを実測

【PR】この記事にはA8.netのアフィリエイト広告を含みます。

先に結論:XServer VPSで公開中の証明書を外部TLS handshakeから調べると、Lets Encrypt YE1発行、期限は2026年11月26日、残り85.056958日でOKでした。45日・13日・1日・期限切れの4状態は4/4正しく判定し、隔離CaddyACME通信失敗も0.388568秒で4系統すべて検出できました。本番証明書を変更せず監視できるため、判定は監視について解決です。

Caddyなら証明書期限を気にしなくてよい?

自動更新は便利ですが、監視不要にはなりません。現在HTTPSが成功していても、次回更新時のDNS、firewalloutbound通信、data volume、時刻の問題は別です。失敗に気づかなければ、browserが期限切れを表示して初めて発覚する可能性があります。

悩みの起点にしたRedditSSL certs suddenly flag as out of date (Caddy)…」では、数か月正常だった後に期限エラーが発生しました。投稿者の解決欄では、firewallDNS/53Pi-holeへ強制し、証明書検証を妨げていたと報告されています。

CaddyAutomatic HTTPSは何をしてくれる?

Caddy公式のAutomatic HTTPSによると、対象siteの証明書を取得・更新し、HTTPからHTTPSへのredirectも自動化します。

一方、公開domainではA/AAAA record、外部からの80/443到達、Caddyport bind、書き込み可能で永続化されたdata directoryなどが前提です。自動化の成否と、外から実際に提示される証明書の残日数を別々に監視します。

XServer VPSでどんな実験をした?

項目 実測条件
VPS XServer VPS、4 vCPU4GB RAM、150GB
OS Ubuntu 26.04
Caddy 2.10.2-alpine
本番確認 TLS handshakeleaf certificateを読み取り
閾値 30日以下WARNING、7日以下CRITICAL、0日以下EXPIRED
失敗case Lets Encrypt stagingnetwork none、公開portなし
container上限 0.25 CPU128MiB RAMPID 96

本番Caddyの証明書、Caddyfile、DNS、packet filterdata volumeは変更していません。取得失敗は別の一時containerだけで再現しました。

[PR]
VPSでいろいろ試すなら『XServer VPS』

現在のXServer VPS証明書はあと何日?

項目 実測値
subject CN=x210-131-222-72.static.xvps.ne.jp
issuer Lets Encrypt YE1
有効開始 2026-08-28 10:17:08 UTC
有効期限 2026-11-26 10:17:07 UTC
残日数 85.056958日
hostname一致 true
判定 OKexit code 0

外から実際に提示されたleaf certificate 1,346 bytesOpenSSLで解析し、SHA-256 fingerprintも生データへ保存しました。「Caddyの保存fileがある」ではなく、利用者が受け取る証明書を確認した点が重要です。

30日・7日・期限切れを正しく区別できた?

証明書条件 期待 実測 exit code
45日 OK OK 0
13日 WARNING WARNING 1
1日 CRITICAL CRITICAL 2
1日証明書を2日後として評価 EXPIRED EXPIRED 3

4/4条件で期待値と一致しました。45日・13日・1日はOpenSSLで実際に生成したcertificateです。期限切れは同じ1日certificatenotAfterを2日後の評価時刻と比較し、host時計を変更していません。

なぜ30日と7日で二段階にする?

30日でWARNINGにすれば、DNSやfirewallを調べる時間を確保できます。7日以下は更新失敗が続いている可能性が高いため、CRITICALとして通知経路や担当者を変えられます。

日数は唯一の正解ではありません。重要なのは「HTTPSがまだ動く」期間に検知し、0日になるまで同じ警告を放置しないことです。exit codeを分けるとcronsystemd timer、監視agentから扱いやすくなります。

ACME更新失敗を実際に再現できた?

隔離containerで再現できました。exp29-acme-failure.invalidCaddyへ設定し、ACME CALets Encrypt stagingnetworknoneにしました。

Caddyautomatic TLS managementを有効にし、obtaining certificateへ進みました。その後、staging directoryDNS lookupconnect: network is unreachableを記録しました。production CArate limitを使わず、外部公開portも作っていません。

どのログを監視すればよい?

検出軸 今回の結果
certificate / ACME 検出
obtaining / renewing 検出
network / DNS 検出
error level / error field 検出

4/4系統を0.388568秒で検出しました。単語一つだけでは、正常な「certificate maintenance started」も拾います。loggermessageerror fieldを組み合わせ、同時に残日数が減っているか確認します。

実験中に何が失敗した?

初回は安全策で--cap-drop=ALLを指定しました。ところがCaddycertificate取得へ進む前に終了し、container PIDが0になったためcgroup値も取得できませんでした。

内部の80/443へbindするNET_BIND_SERVICEまで外したのが原因です。再実験では公開portを追加せず、--cap-add=NET_BIND_SERVICEだけを戻しました。監視scriptPID 0を例外にせず「container exited」と記録するよう修正しています。

CPURAM・ストレージへの影響は?

これはTLS handshake、3 certificate生成、隔離Caddy起動、ログ判定の値です。本番renewalや通常access負荷のbenchmarkではありません。

本番サービスと後片付けは?

公開/health/readyは開始前、隔離ACME失敗中、終了後の全3回でHTTP 200でした。database=okartifact_storage=okも維持しています。

本番CaddyFastAPIPostgreSQLは前後ともrestart 0statusも一致しました。一時containertmpfs、一時certificateを削除し、dangling volumeは前後0件です。

VPS上ではどう監視する?

初心者が迷いそうなポイントは?

XServer VPSでこの悩みはどこまで解決した?

証明書監視については解決です。本番certificateを変更せず残り85.06日を確認し、4段階の期限判定を4/4成功させました。隔離ACME失敗ログも4系統で検出し、本番3containerはrestart 0でした。

実際の本番renewalを故意に止めること、メールやSlackへの通知、複数domain、IPv6、certificate chain全体は未検証です。次の実装では、この判定をsystemd timerまたはVPS上の監視jobへ組み込みます。

よくある質問

Q. Caddyが自動更新するなら監視は不要ですか?

A. 不要ではありません。DNS、firewallnetworkstorage、時刻の問題で更新に失敗するため、外部からの残日数確認が必要です。

Q. 証明書の残日数はどこを見ますか?

A. TLS handshakeで受け取ったleaf certificatenotAfterと、UTCの現在時刻を比較します。

Q. 30日以下ならすぐ障害ですか?

A. まだ有効です。早期調査用のWARNINGとして扱い、7日以下でCRITICALへ上げる設計にしました。

Q. ACME失敗実験で本番証明書に影響しましたか?

A. 影響していません。別containerreservedな.invalid domainstaging URLnetwork none、公開portなしで実施しました。

Q. CaddyログをそのままAIへ送ってよいですか?

A. IP、domain、認証情報、headerが含まれる可能性があります。必要なfieldだけ抽出し、secretredactしてから扱います。

[PR]
XServer VPSの公式情報を確認する

実験日:2026年9月2日。数値は筆者が契約中のXServer VPS 4GB環境における単発の実測です。certificateCaddy、DNS、network、契約planにより結果は変わります。

コメント

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