ドメインを壊した。。。

はてなブックマーク - ドメインを壊した。。。
[`evernote` not found]
[`fc2` not found]
[`livedoor` not found]
[`yahoo` not found]
[`nifty` not found]

あるドメインに接続できなくなった!どうしよう。。。

何度アクセスしようとしてもDNSエラー。。。
そして、どんなに調べても、というより、ずっと動いていたのに突然。。。
ドメインが1つ現在死亡しています。。。

なぜこんなことに?

かねてより、サーバーのリソースを食いつぶすくらいのアクセスとなり、過負荷状態でした。
何とか状況を改善しようと、様々な努力を行ってきました。

CloudFlareの導入

私が愛するPleskが、ここ最近CloudFlareを容易に導入できるプラグインをリリースしました。
そこで、過負荷状態のサイト(Pleskからはサブドメイン単位でON/OFFが可能。)にCDNを導入することになります。
これはありがたいと導入しました。
すると、負荷が1/6程度まで軽減されました。まだまだスペック不足は否めませんが、前と違い、表示までの時間が大幅に軽減され、快適になりました。

調子に乗ってSSLを導入

快適になったことと、業務用のサイトをリニューアルしたことで問い合わせ体制が整いました。
そこでSSLの導入を推進。

SNIってしていますか?

SNI-Wikipedia

簡単に言えば、SSL/TLS拡張の一つです。
シンプルに説明すると、今まではSSL証明書というのは1IPに対して1証明書という仕様上の原理原則がありました。
要は、1IP=1SSL=1ドメイン
というのが今までの原理原則でした。
IP枯渇問題があり、1つのドメインに1つのIPを割り当てるというのは非常に高価なものです。
しかし、SSLという、今や当然の機能を使うにはそうするしかありませんでした。

マルチドメインタイプSSL

そこで登場したのがマルチドメインタイプのSSL証明書です。
ようは、1つの証明書で登録した複数のドメインの認証が可能な証明書をSSL発行機関が発行を始めたということです。
しかし、このマルチドメインSSL 証明書は大体1ドメイン7000~1万円前後しますので、IPを1つ借り受け安い証明書を導入したほうが結果的にコスト安になるくらい高価なものです。

SNI対応WEBサーバーと対応ブラウザ

上記のような問題があり、以前から開発されてきたSNIという考えが2012年度あたりから各サーバー開発者やブラウザ開発者に浸透し始めました。
2015年現在、ほとんどの最新ブラウザで対応されており、携帯端末のブラウザでもほとんどの場合利用が可能になってきた。
このSNIというのは簡単に言えばIPベースで対応していたものがドメイン名ベースで対応が可能になった拡張企画だと考えればわかりやすいです。
これにより複数のドメインのSSL証明書を1つのIPで導入することが可能になりました。

Pleskでの対応

最新のPleskでは、このSNIに対応したWEBサーバーが導入されており、1つの共有IPに紐づいたドメインでも、各ドメイン単位でSSL証明書を導入できる。
サブドメインもサブドメインごとに導入可能です。

複数ドメインでSSLに対応可能なら。。。

いくつかのドメインでSSLを導入したいと考えていたのですが、1IP1ドメインの原理原則と、マルチドメインタイプの証明書は高いので2ドメインでは採算が合わないことで、二の足を踏んでいたSSL導入だったのですが、ここにきて一気に花開きました。
もともと、ハイブランドの証明書の必要はなく、SSL証明書エラー回避程度で十分だと思っていたので、安価な証明書を導入するつもりでした。
対応ブラウザがもともとハイブランドのものより少なく(と言っても今はどんなものでも99%以上ですが)モバイル対応もハイブランドより少ない(と言っても今は95%以上は普通ですが)ので、SNI非対応ブラウザであるユーザと、ローブランドによる非対応の確立は大して変りもないのでそれで十分だという結論に至り、上記のCDN導入と時を同じくして導入しました。

ここまでは良かったのですが。。。

PleskのSSL証明書の設定はある種、特殊らしいです。
ただ、非常に簡単に証明書のインストールができるように作られています。
CSRはすぐ作れます。
SSL証明書発行機関にCSRといわれる暗号のような文字羅列を送らなければいけません。
ほとんどの場合、ここでそのCSRの作り方がわからずあきらめる方も多いのですが、Pleskは、必要な情報を入力して保存するとCSRが発行されます。
そして、そのCSRを発行機関に送ると、(支払いなども済ませちゃえば)即座に証明書関係一式が送られてきます。
そして、それをPleskの今制作したSSLのページで、公開鍵や中間証明書などを導入し、先ほどのCSRをベースに作られた証明書であればPleskが完了しました!と言ってくれます。
これで、導入は終了です。

ここから失敗が始まります。

PleskのWEBサーバーがSNIに対応したということを知らなかった私は従来通り、サーバー→SSL証明書から証明書をインストールし、それから、証明書を取得したドメインの管理パネルからSSL証明書を採用しようと作業をしていました。
ドメイン管理パネルからのSSL証明書の欄には、先ほど導入したSSL証明書が見えません。
あれ?おかしいな?デフォルトに設定したものしか見えないのかな?と思いながらドメインの管理パネル内を見回っていると、そこに、ドメイン単位でのSSL証明書インストールという項目がありました。
そもそも、SNIのことを詳しく知らなかった私は、ある種疑問を感じました。
こちらで、このドメインの証明書をインストールし導入した後に、違うドメインで違うドメインの証明書を導入した場合、いったいどうなるのだろう。どちらが優先されるのだろう。と不思議に思い試してみようと思いました。
ここからです。問題の行動は。。。
ドメインごとに証明書を入れるには、サーバーという単位で証明書を入れるのではなく、ドメインいかにいれなきゃいけないと思い、先ほどサーバーで作った証明書一式をエクスポートし、削除、そして、ドメインのコントロールパネルから該当ドメインいかの場所に証明書をインポートとしました。
うまく復元でき(たように見えた)、さて、アクセステスト。。。
もちろん1つ目なので何の問題もなく表示。。。。されていたのですが。。。ブラウザテストで引っかかりました。
IE、chrome、safariで全く問題がなかったのに、FireFoxだけはエラー。
SSL証明書が不正だといわれました。
そのエラー詳細を見ると、サイトの運営者が不明と。
おかしい。。。CSRを発行した時には運営者はもちろん入れた。
そんなはずがない。。。
ということでインポートしたSSLデータを確認すると、確かに運営者欄が空欄になっている。また、CSRも空欄になっていた。。。
まずい、、、エクスポートインポートすると、CSRが欠落する。。。
おそらく、それにより運営者情報などが欠落し、認証エラーになっている。。。
これはまずい。。。
でもchrome、IE、safariでは問題ない。
もっというと、iPhonesafariは問題ないけど、AndroideChromeは問題あり。
うーん微妙。。。放置もできない。。。
ここです。。。
そこで、いったん新しくCSRを作り、新しいSSL証明書管理を作る。
そのCSRを発行してもらった際のCSRに差し替えてみる
これを5度ほどやった。。。
そういえば、途中でSSLのエラーか何かでPleskが再構成するとかしないとか案内をしていた。。。
あまり気にしていなかった。
その後、あきらめてSSL証明書を再度購入する決断。
もともと、2ドメイン分買おうと思っていたので。。。
なぜあの時、もう一つのドメインを買わなかったのか。。。
同じドメインの証明書をCSRの発行から発行機関へ登録、そして、発行してもらった新しいSSL証明書をインストール。問題なく完了。
よし、これで文句ないだろうとFireFoxでアクセス。。。
全く同じエラーを出力。。。おいおい。。。原因がインポートによる情報の欠落じゃないじゃん。。。
そこで、その証明書ブランドのこと、FireFoxのことを調べた結果わかったことは、中間証明書が3重になること、3重の状態にしてインストールしなければいくつかのブラウザでそのエラーを出力することが分かった。。。
そして、中間証明書を加工、インストール。FireFoxで見てみると。。。何の問題もないという表示に。。。
ということは、2回目の購入は丸損だ。
しかも1回目に購入した証明書は3年間有効の証明書。。。
で、よく見ると、2回目に作った証明書も、証明書一式をインストールした時点で運営者情報などが消えていた。。。
ということはインポートでも問題がなかったわけだ。。。。
ということで最初に購入した証明書に中間証明を加工してインストール。何の問題もなくなる。。。なんだよ。。。
マーとはいえ安い証明書なのでいい勉強になったと思えば安い買い物。
サーこれで解決したし、次のドメインのテストしようかなと思いながら、ほかのドメインを見てみる。。。
あるドメインだけが何をやっても接続できない状態になっていた。。。
CloudFlareを導入したことで、データキャッシュを持ちます。
そして、どうやらこの一連の流れでDNSサーバーがダウンしてしまっていたようで、2時間くらいダウンしていたようです。
キャッシュを持つので、クリアにするのが速いか、いったんCFを止めて、直にアクセスしてもらうか。。。
速度を重んじ、いったんCFを解除。
元には戻ったが、何せ負荷が大きい。重い。。何もできない。。。やっぱりまずいので多少のキャッシュがおかしいのは我慢するにしてCFを再採用。
しかし、反映しない。。。
おかしいい。。。ということでまたCFを解除。。。
でもやっぱり重い。。。やっぱ1~2日我慢しようと決断。CFを採用。
そうこうしているうちに、CFの出力画面のエラーだったものが、CFではない画面のエラーにしかならなくなった。要は、CFにすらいかないおかしな状態になりました。
CFを解除しても、まったく戻らない。
コマンドプロンプトでnslookupしても返ってこない。もちろんwhoisなどで検索しても正引きIPなど出るはずもなく。NSだけは出てくるという状態になってしまいました。。。。
完全に死亡です。
いま、まったく別のサーバーに再セットアップ、NSを変更しましたが、いまだせつぞくできず。。。
いろいろ調べた結果、最長3日程度かかるということなので、週末まで待ってみることにします。。。

はてなブックマーク - ドメインを壊した。。。
[`evernote` not found]
[`fc2` not found]
[`livedoor` not found]
[`yahoo` not found]
[`nifty` not found]

コメント

SNSでもご購読できます。

PR