- ベストアンサー
WindowsにおけるSSL通信の仕組みとは?
- WindowsにおけるSSL通信の仕組みについて解説します。HTTPSサーバーにアクセスした際に、第三者証明機関が中間証明書とサーバー証明書を渡す仕組みがあります。
- 現在のWindowsVistaの環境では、IEの「信頼されたルート証明機関」と「中間証明機関」には複数の証明書が格納されています。この状態で特定のサイトにアクセスすると、そのサイトのCA証明書が「信頼されたルート証明機関」に入っていることが確認されました。
- ただし、IEの「中間証明機関」にはセコムの中間証明書は含まれていないことがわかりました。しかし、セコムのサイトにアクセスしてもパス検証には問題がありませんでした。これは、中間証明書やサーバー証明書がHTTPSサーバー側から提供されている可能性があることを示しています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
ちょっと古い本ですが、以下の書籍に仕組みが詳しく書かれていました。 (図書館で見つけました) SSL/TLS導入ガイドブック ISBN: 4-8399-1943-7 http://honto.jp/netstore/pd-book_02628137.html SSL/TLSによる通信のうち、HTTPS通信におけるサーバー証明書には、ルート証明書に連なるリストも一緒に入っているようです。 それが改ざんされていない事が前提ですが、サーバー証明書自体にそれらの処理が施されているので、クライアントに中間証明書を準備しておく必要はない、と解釈しました。 中間証明書に関しては詳しい記載がなかったのですが、「サーバー証明書」以外の用途(コード証明や、メールの証明)で利用する場合に必要になってくるのではないでしょうか。 HTTPS通信の場合は、「サーバー側」に中間証明書が必要なのは、#3の方が書いておられる通りです。 RootCAが勝手に入る件は、気持ち悪いと感じる部分もありますが、いわゆる「オレオレ証明書」では警告されることから、信用できる機関から信用できる情報で入手していると見て問題ないのではないでしょうか。 もちろん、そこの処理にセキュリティホールがあれば大変な事ですが。
その他の回答 (3)
- kadusaya2
- ベストアンサー率48% (114/235)
前回の「ルート証明書の更新機能について」に回答したものです。 結局、信じてはもらえなかったってコトなのね・・・。てな愚痴は置いといて。 (^o^// まず 1 ですが、ご認識通りHTTPSですのでパケットキャプチャでは確認できません。 存在しない → アクセス → 存在する という事象から推論するしか方法は無いと思います。 2 は簡単です。自分でルート認証局+中間認証局+SSLサーバーを立てれば確認できます。 「ルート証明書をダウンロードする」 と 「中間証明書を検証する」 は独立した処理ですので、自分で認証局を立てて あらかじめインストールしておけば 「中間証明書を検証する」 のはテストできます。 一番簡単に中間認証局を構築できるのはOpenSSLです。ルート認証局と中間認証局を構築したら、ルート証明書のみVISTAへインストールします。 中間認証局からSSLサーバー証明書を発行したらApacheに設定します。中間証明書はSSL.confのSSLCertificateChainFileです。 最初は中間証明書を入れずにアクセスしてみてください。エラーになるハズです。 次に中間証明書を設定してからアクセスすると、正常にいくハズです。 以上です。
補足
ありがとうございます。 すみません。前回の「ルート証明書の更新機能について」の回答で"Windows VISTAと7ではOS出荷時にルート証明書は空の状態"と伺っていたのですが、 Vista,7でネットワークに接続できない状態でOSセットアップを行ったところ、ルート証明書が空ではなくベリサインの証明書などが入っていたので理解するために確認してみました。 2についてですが、SSLクライアントに中間証明書がインストールされていなければエラー になるので中間証明書もインストールが必要なのは分かるのですが、セコムトラストネット のサイトにアクセスしたときにルートCAしかインストールされませんでした。 セコムトラストネットのサイトを見るとルート証明書を更新する手順としてあり、それを実施すると Security Communication RootCA1、Security Communication RootCA2、Security Communication EV RootCA が追加されるとあります。 --------------------------------------------- http://repository.secomtrust.net/rootupdate Security Communication RootCA1 Security Communication RootCA2 Security Communication EV RootCA --------------------------------------------- しかし、その手順を実施しないでセコムトラストネットにアクセスするとパス検証は問題なく、 IEにインストールされている証明書はセコムトラストネットのルート証明書のみでした。 他にセコムトラストネットの証明書はなく、その証明書の有効期限からセコムルート証明書 であることを確認しました。 -------------------------------------- SECOM Trust System CO LTD Security Communication EV RootCA1 Security Passport for EV CA www.secomtrust.net ------------------------------------- 本来、中間証明書が入っていない場合、エラーになるはずですが、エラーにならないので 調べていたところ、ベリサインのサイトに下記の情報がありましたので中間証明書が自動で インストールされているのではと思って確認しましたが、IEの信頼されたルート証明機関、 中間証明機関にもない状態でした。 IEの信頼されたルート証明機関、中間証明機関にもない状態なのでダウンロードされていない のではなるのですが、その場合、パス検証が通った理由がつかなくなってしまっています。 https://www.verisign.co.jp/ssl/help/faq/110116 一部環境の Internet Explorer は、自動的に必要な中間CA証明書をダウンロードする機能を持っています。 このため、Internet Explorerの環境によっては中間CA証明書がインストールされていなくても警告が表示されないことがあります。 中間CA証明書は、必ずウェブサーバにインストールしてください。
すみません。拡張子は、.cer でした。(Certification) 当方でも確認してみました。最新パッチ適用済みでもセコムトラストさんのRootCAはなく、セコムトラストさんにアクセスしたら現れました。(パケットキャプチャはしていません) 中間証明書がクライアント上に現れない件についてはもう少し調べてみないといけませんが、SSLを使うサイトすべての中間証明書を保管しておく事は、量的にも、安全性といった面でもあまりよろしくないようですね。 (個別にインストールする事は可能ですが) あと、パケットキャプチャで中身が分かるものであれば、改ざんも可能なわけで、簡単に見つけられるものではないのではないでしょうか。 専門家ではないのですが、気になるのでもう少し調べてみます。
補足
ありがとうございます。 下記のサイトを見ると下記の記載があるので、Microsft Updateでダウンロードされている と考えられますが、IEの信頼されたルート証明機関、中間証明機関にも中間証明書は 入っていませんでした。 Secom Trust System CO LTDはIEの信頼されたルート証明機関に入っていますが、 "Security Communications EV Root CA1"と"SECOM Passport for Web EV CA"がIEの信頼された ルート証明機関にも中間証明機関にも入っていませんでした。 http://repository.secomtrust.net/rootupdate/を見るとルート更新プログラムを実行すると インストールされるようですが、実行していないにもかかわらずパス検証が通ったかが 不思議な状態です。 --------------------------------------------------------------------------------- http://support.microsoft.com/kb/931125/ja Windows Vista 以降のルート証明書は、自動ルート更新メカニズムを介して、 つまりルート証明書ごと配信されます。ユーザーが (HTTPS SSL を使用して) セキュリティで保護された Web サイトにアクセスし、セキュリティで保護された 電子メール (S/MIME) を読み取り、署名 (コード署名) された ActiveX コントロール をダウンロードし、新しいルート証明書を検出した場合は、Windows 証明書チェーンの 確認ソフトウェアにより Microsoft Update でルート証明書が確認されます。 そのルート証明書が見つかった場合は、プログラムのすべての信頼されるルート証明書の 一覧が含まれる現在の証明書信頼リスト (CTL) がダウンロードされ、そのルート証明書が その一覧に存在することが確認されます。続いて、指定のルート証明書がシステムにダウン ロードされ、Windows の信頼されたルート証明機関ストアにインストールされます。 ---------------------------------------------------------------------------------- ルート証明書のダウンロードですが、下記のサイトにあるので、恐らくHTTPS(443)で行われているのではないかと思います。そのため、パケットをとっても渡されているルート証明書のデータを見るとできないので確認することができないと考えています。 http://support.microsoft.com/kb/822712/ja
https://www.verisign.co.jp/ssl/help/faq/110116/ > 一部環境の Internet Explorer は、自動的に必要な中間CA証明書をダウンロードする機能を持っています。 > このため、Internet Explorerの環境によっては中間CA証明書がインストールされていなくても警告が表示されないことがあります。 > 中間CA証明書は、必ずウェブサーバにインストールしてください。 中間CA証明書は、RootCA証明書または上部中間CA証明書によって証明されているので、それが確認できれば自動でダウンロード、インストールしてしまうようですね。 証明書は、.csr 拡張子のファイルですから、それを観測すれば良いのではないでしょうか? ---- SECOMさんは、SSL認証局の事業も行ってます。 https://www.secomtrust.net/service/pfw/ http://repository.secomtrust.net/rootupdate/ 上記説明によると、7までは初期インストールの状態ではRootCAが入っていないように見受けられます。 Microsoft Updateやサービスパック等で更新されているのかもしれません。
補足
ありがとうございます。 セコムトラストネットのサイトにアクセスしたときCA証明書は自動でインストールされましたが、 クロスルート証明書のためか中間証明書はインストールされていませんでした。 IEの中間証明書で確認してもセコムトラストネットの証明書がありませんでしたので、 どうやってパス検証が行われたかが不思議な状態です。 パケットキャプチャを見ると207.46.15.253があがっており、これがマイクロソフトのサーバー のようですがHTTPでCSRをゲットしている形跡はありませんでした。 Wiresharkでみると207.46.15.253に対してCliant Helloを送っており、207.46.15.253からは Server Helloが返ってきていることが確認できますが、その間での通信でのバイナリを見ても セコムトラストネットの文字列はありませんでした。 セコムトラストネットのサーバーにアクセスしたときは、Server Helloが返ってきているバイナリ データにセコムトラストネットの文字列はありました。
お礼
ありがとうございます。 Webサーバー側にはCA証明書、中間証明書、サーバー証明書が必要ですが、クライアント側にはWebサーバー側からサーバー証明書とともに証明書チェインが提示されるので、クライアント側はその証明書チェインを見て、中間証明書がCAから発行されていることが確認できればいいので、クライアント側に中間証明書が無くても問題ないということでしょうか。 CA証明書がないと自動でインストールされるのはCA証明書がないと証明書チェインに記載されている中間証明書が正しいかどうか判断が出来ない為、おそらくインストールされるのではないかと思います。
補足
下記のサイトを見るとルート証明書は送信されるみたいです。 Lesson4:相手が信頼できることを確かめる「サーバー証明書」とは? http://itpro.nikkeibp.co.jp/article/COLUMN/20071012/284426/