恥ずかしながら、今朝未明の3時ごろから先ほど、9時40分ごろまで、このWEBサイトにアクセスできなくなっていた。
原因は、SSL証明書の失効。
Let's Encrypt で取得し、自動更新する設定にしていたのだが、今年の上半期の終了、5月末日を持って古いプロトコルが廃止されたらしい。
3年前には、新プロトコルも、対応するツールも公開されていたのに、気づいていなかった。
6月1日の直前にも、メールで「旧 API廃止」と警告されていたのに、気づいていなかった。
さらにその後も「証明書更新してないよ」という警告が来ていたのに、気づいていなかった。
どんだけボンクラなんだ、って話だけど、仕事ならともかく、趣味でやっているサイトなのでそこらへんはいい加減だ。
申し訳ない。
(SSL は基本技術過ぎて空気のようなもので、無くなって初めてその存在に気付くのだ)
で、最後に更新していたのが5月29日。
Let's Encrypt で発行される証明書は期限が3ヵ月なので、今朝失効したというわけ。
失効すると1から取得しなおさないといけないのだけど、もう何年も取得なんてしていなかったので、やり方忘れていた…
9時前に失効に気づき、慌てて作業しようとするも、作業手順すら忘れていた。
というか、どのマシンで証明書の自動取得を行っていたかすら忘れていて、違うマシンの中でコマンドを探し始める始末。
(WEB サーバー証明書だから、WEB サーバーで処理しているに決まっているのに)
ネットで情報探しながら作業して、およそ1時間。やっと再取得できた。
いろいろとエラーを出しながら、そのエラーを解消していく、ということの連続で、最後のエラーが「API v1 にアクセスできないよ」というメッセージだった。
ここでやっと根本原因に気づいたのだった。
3時間後の追記
ついで(?)なので、古くなっていた SSL 関連の設定を見直してみた。
もう5年も前にチェックしていたSSL LABSでチェックを行ってみた。
一応、その後も時々はチェックしていたのよ。ずっと A+ だった。
でも、久しぶりにやったら B だった。
TLSv1.0 と v1.1 のプロトコルは、「脆弱性がある」ということで、昨年頭に各ブラウザ一斉に使用しない設定に替わったらしい。
それをうけて、これらのプロトコルを許可しているサイトは、B ランク以下にするようにした、という説明があった。
なるほど、そうなのか。気づいていなかったということは、最後にチェックしたのは1年半以上前だということだ。
早速、これらのプロトコルを使えないように設定する。
ついでに、TLSv1.3 をサポートするように、新しい openssl と nginx を導入する。
これで評価が A+ に戻った。
古いプロトコルのサポートをやめた影響で、IE11 以外の「古いIE」を使っている人は、アクセスできなくなった。
あと、Android 4.3 以前(Chrome ではなく、Android Browserを使用する機種)や、Mac Safari の 6.0 (8年前のバージョン)以前もアクセスできなくなっている。
ここを見られなくなった方、ごめんなさい。(と、ここで謝っても読めないわけだが)
というか、IE11 は結構古い(リリースは8年前)のに、ちゃんと TLSv1.2 には対応しているのだな。
そのつもりでレポートを読むと、以前苦労して対応した、Chrome 49 と Firefox 47 (どちらも5年前のバージョン)でも、まだアクセスできるようだ。
IE11 はまだ使っている人いそうだな…
(僕も仕事上使うことがある。動作チェックだけど)
Chrome や Firefox は自動更新なので、こんな古いバージョンを使っている人はいないと思うのだけど、ちゃんと見られますよ、ということで。
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |