SSLサーバ証明書更新にて購入元によるweb認証のhttpsアクセスが403になる

投稿者: | 2021年11月3日

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で読もうとしているのかも?(ブラウザの設定か何かで)
それを排除したのだろうと考えることにした。

正しい答えは、結局わからないのだが。。。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)