当時のRSSを掘り起こす作業をしていて、ふと気づきました。
自分のブログ、この”ものくろぼっくす”のRSSが取得できない。
おかしいなと思ってブログを開くと、トップページは表示される。でも記事によっては画像が出ない。ときどき「An error occurred」という素っ気ないエラー画面になる。
最終更新は3日前。止まっているような、動いているような、なんとも中途半端な壊れ方です。
結論から言うと、原因は、SSL証明書の失効。
ブログは3日間、実質止まっていました。気づかなかったのが、我ながら怖い。
調べたら、サーバーは全リクエストにエラーを返していた
Claude Codeに「調べて。原因を見つけて。調べるだけを行って」とお願いして、外から順番に確認してもらいました。
トップページは200で返ってくる。なのにRSSは503。記事APIも503。ログイン画面も503。実在する画像ファイルまで503。
サーバーに届いたリクエストは、全部エラーになっていました。
で、なんでトップページは見えていたのか。
「なんとなく見えていた」のは、Cloudflareのキャッシュだった
このブログは、サーバーの前にCloudflareを挟んでいます。
Cloudflareが以前の正常なページをキャッシュとして持っていて、それを配ってくれていた。だからトップページや一部の画像は見えていたんです。
キャッシュに乗っていないもの、たとえばRSSは、毎回サーバーまで取りに行く。だから確実に死んでいた。
画像が出たり出なかったりも、時々エラー画面になるのも、全部「キャッシュにあるか、ないか」の差でした。
中途半端に見えていたおかげで、3日間気づけなかった。皮肉な話です。
警告メールは、5通も来ていた
サーバーはConoHaを使っています。
調べてもらったら、ConoHaから「SSLサーバ証明書の自動更新に失敗しました」というメールが、20日前、10日前、3日前、2日前、最終日と、5通も届いていました。
全部、未読。
毎日大量のメールに埋もれて、完全に見落としていました。orz
Cloudflareを挟むと、無料SSLの自動更新が通らない
ここが今回の記事で一番お伝えしたいところです。
ConoHaの無料独自SSL(Let’s Encrypt)は、更新のときに「そのドメインが本当にConoHaのサーバーを向いているか」を確認します。
ところが、Cloudflareを挟んでいると、外から見えるのはCloudflareのアドレスです。ConoHaのサーバーは見えない。
なので、確認が通らない。何度やっても失敗する。そして90日後、証明書が失効する。
実は5月にも同じことをやらかしていて、そのときはコントロールパネルで無料独自SSLをOFFにして、ONにし直して凌ぎました。でも根本の原因が残っているので、90日後にまた同じことが起きた。それが今回です。
ConoHa + Cloudflareの組み合わせで運用している方は、同じ罠にハマる可能性が高いので、ご注意ください。
復旧の手順
やったことは3つです。
まず、CloudflareのDNS設定で、対象ドメインのプロキシをOFF(DNSのみ)に切り替える。オレンジ色の雲のアイコンをクリックして、グレーにするやつです。これでドメインがConoHaのサーバーを直接向くようになります。
次に、ConoHaのコントロールパネルで、無料独自SSLをOFFにして、ONにし直す。数分で新しい証明書が発行されました。
最後に、Cloudflareのプロキシを元に戻す。
これで復旧。RSSも記事APIも画像も、全部返ってくるようになりました。ホッと安心。
手動でやると、また忘れる。なので自動化した
ただ、これで終わりにすると、90日後にまた同じことが起きます。
「更新の時期だけプロキシをOFFにすればいい」と分かっていても、その作業を90日ごとに人間が覚えていられるか。無理です。5月と8月、2回忘れた実績があります。
そこで、Claude Codeと一緒に、番人スクリプトを作りました。
毎朝、証明書の残り日数をチェックする。残り25日を切ったら、Cloudflareのプロキシを自動でOFFにする。ConoHaの自動更新が通ったのを確認したら、自動でONに戻して、完了通知をくれる。
プロキシが外れるのは90日ごとに1日程度だけ。その間もサイトは止まりません。サーバー直配信になるだけです。
あわせて、メールの自動仕分けのルールにも「SSLサーバ証明書」という件名は大切なメールとして扱うよう追加しました。警告メールが5通も埋もれた反省です。
まとめ
ブログが中途半端に壊れていたら、CDNのキャッシュで「見えているだけ」の可能性があります。RSSやAPIなど、キャッシュされないところを確認すると、本当の状態が分かります。
ConoHaの無料独自SSLとCloudflareの併用は、そのままだと90日ごとに証明書が失効します。更新の時期だけプロキシを外す運用が必要です。
そして、90日ごとの手作業は必ず忘れます。僕は2回忘れました。仕組みにして、人間は通知を受け取るだけ、にするのがオススメです。




