SSL付きのサイトを多数運用する中で、更新作業がどうしても発生する。
特にappleがsafariでの証明書期限を1年にしてくれたおかげで、より更新が頻繁になった。
より短くするべきだというロジックはわからなくはない。
で、おそらく無数にあるサイトの中で使われているSSLはドメイン認証型の安価なものだと思うが、自分もそれを使っている。
その更新の時に、ドメイン認証を実施する。これは取得時と同じく、以下のどれかの方法で認証される。
(要は自分がそのドメインを管理しているかどうか。)
●NSに指定されたレコードを登録する(DNSによる認証)
●管理者メールのアドレス(webmasterやadmin)に送られたメールにて承認作業(やったことないけど、おそらく本文にあるリンクをクリックとかだと思われる)
●準備したファイルをそのドメインでhttp(もしくはhttps)で公開されているサーバに置く(web認証)
方法はどれでもいいが、「SSLの更新」という場合は、すでにhttpsで運用している中で、httpsアクセスを確認する方法を行なっていたが、ある時からドメイン認証のhttpsアクセスが403になってしまう。
これについて調査する。
(まぁ、最終的には他の方法を選べばいいのだが)
ページコンテンツ
アクセス制限を解除してみた
このサイトには、いろんな海外のクローラーが来ることでサーバ高負荷になることがあったので、高負荷が発生した海外クローラーにアクセス制限をかけている。
正直、ユーザエージェントで制限をかけているので、全く異なるユーザエージェントであるこのアクセスには関係ないかもと思ったが、正直わからなかったので、一旦外してみて、認証を実施してみた。
が、これではダメだった。
エラーの内容を確認
そういえば、どういうエラーになっているのか確認していなかったので、みてみる。
[Tue Nov 02 15:14:35.673049 2021] [ssl:error] [pid 9935] [client 91.199.212.132:51448] AH02261: Re-negotiation handshake failed
[Tue Nov 02 15:14:35.673098 2021] [ssl:error] [pid 9935] SSL Library Error: error:14094153:SSL routines:ssl3_read_bytes:no renegotiation
「Re-negotiation handshake failed」に付いて調べてみた。調べてみた中で気になったのは「ネゴシエーション中にセキュリティレベルが変わるとエラーになる」「中間証明書がおかしい」という内容だったが、中間証明書は1年前に問題があって対応したし、ネゴシエーションでエラーになるというのは、確か脆弱性対策でその様になったはず。。。という認識で、ピンと来るものがなかった。
次に「SSL routines:ssl3_read_bytes:no renegotiation」について調べてみたが、これもネゴシエーションがらみっぽい。もしかしたらアクセス元がリネゴシエーションありきのアクセスをしているのではない?というのを思ったがこれに対しても、特にめぼしいものはなかった。
原因はvalidationファイルだった...?
調査で方針が立てられなかったため、最後にSSL購入サイトのサポート窓口に問い合わせしてみた。
すると、サポートからは「指定しているバリデーションファイルが違うよ」と返ってきた。
確認したところ、今回のvalidation用のファイルになっていなかった。
SSL更新時は(自分が使っているgogetは)、認証をhttpsアクセスで行う場合、前回のファイルと同じファイル名だったのだが、内容は変わっている。
ファイル名が変わってないので、その置き換えを私が実施していなかった。
(完全にここの認識が間違っていた。「いや、値も変わらないだろう」という認識で意図的に置き換えなかったわけではない)
その指摘通りファイルを置き換えたが、その直後の認証処理も失敗した。(ファイルアクセスは“403”)
ので、再度サポートに問い合わせしてみた。
するとしばらくして「認証パスしましたよ」と返答が来た。管理画面を見てみると確かに発行されていた。
もしかしたら、apacheのキャッシュ設定をしているので、そのためファイルの置き換え直後に失敗したのかも。
ただ、403?と思うけど。。。とはいえ、自分に問題があった。ちゃんとやらないといけないことはやろう。
その他
(ここから先は推測の話だが)
以下のapacheのエラーが気になった。
[Tue Nov 02 15:14:35.673049 2021] [ssl:error] [pid 9935] [client 91.199.212.132:51448] AH02261: Re-negotiation handshake failed
[Tue Nov 02 15:14:35.673098 2021] [ssl:error] [pid 9935] SSL Library Error: error:14094153:SSL routines:ssl3_read_bytes:no renegotiation
中を見ると「ssl3で読み込もうとしてネゴシエートできなかった」みたいに読める。
ssl3は無効化しているが、「91.199.212.132」がssl3で読もうとしているのかも?(ブラウザの設定か何かで)
それを排除したのだろうと考えることにした。
正しい答えは、結局わからないのだが。。。