Circle.msにFirefoxでhttpsでSSL接続しようとしたら
「接続の安全性を確認できません」と言われた人に贈る回避策と技術情報
回避策
原因
- Circle.ms側のサーバ設定ミス
- Firefoxが悪いわけではない
- なぜIEとChromeなら問題ないのかというと,こいつらはお節介野郎だからww
- 詳しくは後述する技術的な話の部分を読んでね
ここからは技術的な話と笑い話
この問題が発生する原因は,上述したとおりCircle.ms側のサーバ設定ミスなのね
何のミスかというと,「中間CA証明書がWebサーバにインストールされていない」
これは,以下のサイトで確認できる
ほかにも
% openssl s_client -connect circle.ms:443 -showcerts
とかやると,エラーメッセージばっかり出てきてヤバイ
# 長くなるので,出力は省略
中間CA証明書ついての詳細は,VeriSignのサイトに
「
中間CA証明書はなぜ必要なのでしょうか」というドキュメントがあったので
これを読むとしあわせになれます
SSLの設定って,Webサーバの証明書だけでいいんだってよく勘違いされるんだけど
そんなことはない
Webサーバの証明書とともに中間CA証明書もサーバに導入する必要がある
要するに,必要な証明書が揃ってなかったから
Firefoxが「書類不備です」と仰ったわけ
で,ここで多くの人に疑問符が出てるポイントがあると思う
どうしてInternet ExplorerとGoogle Chromeなら問題なくHTTPSで接続できるのか
それは,これらのブラウザには
本来必要であったのに,サーバから送られてこなかった中間CA証明書を
自動で補完する機能があるから
つまり,書類不備だったんだけど
不備の部分をかってに修正する機能を備えてるってこと
こうしたブラウザによる実装の齟齬の問題は大手の認証局も認識しているようで
GlobalSignのサイト内の「
中間CA証明書に関して」というページには
本件と同様のインシデントについて述べられている部分がある
引用すると
なお、ブラウザによっては自動的に情報を補完するため、中間CA証明書がサーバに設定されていなくともエラーにはなりませんが、バージョンやキャッシュの状況によっては、中間CA証明書が設定されていないと警告が表示されますので、設定をしていただく必要がございます。
とのこと
有り体に言えば,IEとChromeがお節介にも
わざわざサーバの設定ミスを無言でフォローしちゃったので
フォローできなかったFirefoxでだけエラーとなった,と
この中間CA証明書を自動で補完する機能なんだけど
危険なお節介機能,というわけではない
Webサーバの証明書には中間CA証明書の場所(URI)が載ってる
そこにアクセスして証明書をダウンロードした上で,あらためて証明書チェーンを検査する
だから,セキュリティ上のリスクはたいしたことがない
ただ
RFC5246では,チェーンを構成するルート証明書以外のすべての証明書を
いっぺんにクライアントに送りつけるように規定している
これは,7.4.2節の「Server Certificate」に明記されている
This is a sequence (chain) of certificates. The sender's certificate MUST come first in the list. Each following certificate MUST directly certify the one preceding it. Because certificate validation requires that root keys be distributed independently, the self-signed certificate that specifies the root certificate authority MAY be omitted from the chain, under the assumption that the remote end must already possess it in order to validate it in any case.
第一文の「sequence (chain) of certificates」というのは
中間CA証明書も含めた,すべての証明書のこと
# 英語が嫌いな人は
IPAのRFC5246日本語訳を参考に
要するにFirefoxはRFCのとおり,非常に厳格に実装したわけ
で,中間CA証明書が送られてこなかったので,エラーを吐いた
それに対して,IEやChromeは比較的柔軟に対応したので
問題なく接続することができた,ということ
繰り返しになるけど,本来はサーバ側に
きちんと中間CA証明書も導入しないといけないのであって
Circle.ms側のミスであることは言うまでもない
それでは,ここからは笑い話を2つ
ひとつめは苦笑い
Circle.msが使ってるSSL証明書って,
StartComのFreeSSLなのね
このFreeSSLって,ドメイン所有者なら無料でSSL証明書が発行してもらえるので
自鯖持ってる個人ユーザにはかなりおすすめのサービス
……ただ,利用者から「システム利用手数料」を徴収して運営してるサービスで
無料のSSL証明書を使うとはかなりいい度胸だと思う
まあ,この件はランニングコストの削減とか
経費の合理化とか,そういう理由がつくので大目に見るとしよう
私が大笑いしたのはふたつめ
Circle.msのサーバって,Apache HTTP Serverじゃなくて
Microsoft IISで動いてるみたいなの
で,このFreeSSLの
IIS用の導入支援ページを見たときに
腹の皮がよじれそうになった
原因の一文
This guide does not include instructions for adding the root and intermediary certificates.
Circle.msのシステム担当者はちゃんとマニュアル読め!
「このガイドでは,中間CA証明書の導入手順については述べません」って書いてあるぞ!!
まとめ
Circle.msのシステム担当者は
とっととサーバに中間CA証明書をインストールしてください
でないと,RFCに厳密に則った実装を行っているFirefoxが,HTTPSで正常にアクセスできません
推奨環境にFirefoxと書く以上は,ちゃんと対応すべきです
もうしばらくしたら,C81のオンライン申し込みの締め切りになるので
早くしたほうがいいと思います
愚痴
Circle.msのリニューアルに際して作業をした担当者は
あまりにうっかりさんなドジっ娘だと思う
どうしてFirefoxでちゃんと動作確認してないの?
HTTPSでアクセスしたら,正常に動かないのは誰にでもわかるのに……
何のための「推奨環境」よ
これは,Web制作者がこの環境で動作を確認したっていうことを明示するためのものでしょ
はぁ……
なんか,久しぶりに相当適当なシステムを見た気がする
おまけ
circle.msのサーバにRDPで接続可能(Guestログインはできない)なんですが……
Windowsサーバって,だいたいこういう運用の仕方になってるの?
LinuxサーバのSSHみたいな使われ方なのかな……