アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして
標記の件につきまして、ご教示願います。

以下のURLの解説において、
http://itpro.nikkeibp.co.jp/article/COLUMN/20071 …
クライアントには,「サーバー証明書」と「ルート認証局の自己証明書」が一緒に送られてくる。パソコンの中にもともと入っている証明書を使ってルート認証局の自己証明書の正当性をチェックし,その後,サーバー証明書の正当性をチェックする。という記述のなかで、

パソコンの中にもともと入っている証明書を使ってルート認証局の自己証明書の正当性をチェック
すると記載しておりますが、サーバから送られてくる「ルート証明局の自己証明書」とクライアント側
にもともと入っている証明書を使って正当性はどのようにチェックしているのでしょうか?

宜しくお願いいたします。

A 回答 (2件)

ITproの説明が少し間違ってますね。



サーバが送ってくるのは、
「ルート認証局の自己証明書」では無くて、
「ルート認証局の自己証明書+中間認証局の証明書」です。
apacheで言えば、SSLCertificateChainFileに設定した内容です。
(SSLCACertificateFileでは無いですよ)
中間認証局が無ければルート証明書だけになるので、それでカンチガイしているのでしょう。

原則としては、サーバが送ってくる認証局の証明書を正当と見なすことはしません。
サーバが不正を目的としているならば、サーバ証明書も、それを発行した認証局の証明書も信用できません。
なので、サーバが送ってきた「ルート認証局の自己証明書」を正当性チェックしたりしません。
ただし、サーバ証明書の正当性チェックのための参考にはします。

では、どうやって正当性チェックを行っているかと言うと・・・。
(以下、WindowsでIEの場合で説明します)

まず、どこかのSSLサイトを開いて、サーバ証明書を表示してください。
「詳細」タブをクリックして、その中の「機関キー識別子」を見てください。

続けてIEのメニューバーから、ツール → インターネットオプション → コンテンツタブ → 証明書ボタン → 信頼されたルート証明機関 を開きます。
ここに表示されているのが、「パソコンの中にもともと入っている証明書」です。

サーバ証明書の機関キー識別子と、信頼されたルート証明機関の中から機関キー識別子が、一致する証明書を探し出します。
ブラウザは、この機関キー識別子が一致した証明書を “サーバ証明書を発行した認証局の証明書” と見なします。
で、その認証局の証明書に入ってる公開鍵を使ってサーバ証明書の署名を確認し、正しければ “正当である” と判断するワケです。

サーバ証明書が中間認証局から発行されている場合、その中間認証局の証明書は 「パソコンの中にもともと入って “いない” 証明書」 ですので、上記のチェックは失敗します。
ここで、先に書いた「ルート認証局の自己証明書+中間認証局の証明書」が必要になってきます。
サーバ証明書と一緒にこれらの証明書を送ることで、ブラウザは サーバ証明書 → 中間認証局 → ルート認証局 にたどり着くことができるワケです。
ただし、正当性チェックはあくまでも「パソコンの中にもともと入っている証明書」で行われ、サーバが送ってきたルート証明書は使用しません。

以上です。

この回答への補足

kadusaya2・・・様
非常に丁寧なご回答ありがとうございます。

以下 質問をさせてください。
1.
その認証局の証明書に入ってる公開鍵を使ってサーバ証明書の署名を確認し・・・

Q1
サーバから送られるルート証明書は、あくまでもキー識別子を確認するためだけに照合され
一致したら、パソコンに入っている公開鍵を用いるのでしょうか?
上記があっているという認識で、もともとパソコンに入っているルート認証局証明書の公開鍵はどのようにとりだすのでしょうか?

2.
サーバ証明書と一緒にこれらの証明書を送ることで、ブラウザは サーバ証明書 → 中間認証局 → ルート認証局 にたどり着くことができるワケです。
Q2
ルート認証局の公開鍵を取り出し、それを用いて中間認証局の公開鍵を取り出しさらにサーバ証明書
に含まれている公開鍵を取り出すという順番ではないのでしょうか?

以上 宜しくおねがいいたします。

補足日時:2012/05/04 01:34
    • good
    • 0

> その確認方法は簡単だ。

(中略)一致するかを確認し,
> 一致したら受信した証明書は信頼できると判断する。

と,質問文にあったリンク先に書かれています。

何が一致するのか,というと,それはハッシュ値(拇印)でしょう。

http://oshiete.goo.ne.jp/qa/5127755.html の私の過去の回答ANo.1~ANo.3
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!