- PR -

SSL通信についての質問です

1
投稿者投稿内容
sakura77-kg
会議室デビュー日: 2005/04/06
投稿数: 2
投稿日時: 2005-04-06 10:52
SSL通信により、データを暗号化してWeb上でやりとりをするシステムの構築を考えています。
そこで質問なのですが、SSL通信というのは基本的にサーバ認証システムだと認識しているのですが、クライアントの認証を行いたい場合はどうすればよいのでしょうか?
そのようなことは可能ですか?
クライアント証明書を利用すればよいのでしょうか?
何か分かりやすく説明されているページなど教えてください。

初歩的な質問ですがよろしくお願い致します。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2005-04-06 11:39
引用:

そこで質問なのですが、SSL通信というのは基本的にサーバ認証システムだと認識しているのですが、クライアントの認証を行いたい場合はどうすればよいのでしょうか?



SSL は標準でクライアント認証をサポートしています。ただしクライアント認証はオプションですから、サーバ側の設定でクライアント証明書を要求するように設定しないとクライアント認証は行われません。

SSL の仕組みについてはベリサインのHPにも載っていたと思いますし、Google 等で "SSL クライアント認証" のキーワードでも結構ヒットすると思います。
sakura77-kg
会議室デビュー日: 2005/04/06
投稿数: 2
投稿日時: 2005-04-06 13:16
あんとれ様、ご返答ありがとうございます!

クライアント認証について自分でもいろいろ調べているのですが、
認証の流れがいまいち分かりません。
サーバ側ではクライアント証明書を取得して、どのようにして認証を行うのでしょうか?

また、Webサーバ側に自分でCAを準備した場合何か問題はありますか?

相手の認証になるため、
サーバ認証の場合のような「オレオレ証明書」にはならないと思うのですが、
どうなのでしょうか?

サーバ認証を行わず、クライアント認証だけを行うことも可能ですか?
j-zamrai
会議室デビュー日: 2003/05/21
投稿数: 5
投稿日時: 2005-04-06 15:03
横から、失礼。

http://okweb.jp/kotaeru.php3?qid=1313685


もしかして「マルチポスト」、ですか?

本スレッドの回答者の顔を潰すことにもなりかねませんから、一応ご報告しておきますね。

私の大勘違いであれば、深謝します。

それでは。

nishi
常連さん
会議室デビュー日: 2003/11/14
投稿数: 25
お住まい・勤務地: 大阪
投稿日時: 2005-04-06 15:48
引用:

クライアント認証について自分でもいろいろ調べているのですが、
認証の流れがいまいち分かりません。
サーバ側ではクライアント証明書を取得して、どのようにして認証を行うのでしょうか?



認証の方法をお知りになりたければ
「SSLハンドシェイク」
で検索してみてはどうでしょうか。
実際に同様な処理を行って認証を行っているか説明しているサイトが見つかると思います。


引用:

相手の認証になるため、
サーバ認証の場合のような「オレオレ証明書」にはならないと思うのですが、
どうなのでしょうか?


クライアントが使用できる証明書は、サーバで信頼しているCAから発行されたものとなりますから、サーバで信頼するCAの設定時に間違って「オレオレ証明書」をつかまされる危険性もあるのではないでしょうか?
間違っていたらすみません。
makoto
常連さん
会議室デビュー日: 2004/05/05
投稿数: 40
投稿日時: 2005-04-15 23:10
「SafeConduct」というのがあります。

お役に立てば

http://www.climb.co.jp/soft/hitsw/products/index.html#03
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-16 01:07
こんばんは。
ご自分のパソコンで、Apache+mod_sslによるSSL対応Webサーバと、OpenSSLによるCAを構築して具体例を体験すれば、実感が得られるのではないでしょうか。
Linux/UNIXでも、Windows環境でもできますし、解説サイトも沢山ありますから、難易度が高すぎることは無いと思います。

さて、
引用:
クライアント認証について自分でもいろいろ調べているのですが、
認証の流れがいまいち分かりません。
サーバ側ではクライアント証明書を取得して、どのようにして認証を行うのでしょうか?


基本はサーバ認証と変わらず、ポイントは2つあります。

(1) 証明書が信頼しているCAから発行されているか
クライアントから提出された証明書を見て、発行元CAが、サーバ側に登録してある「信頼しているCA一覧」に含まれているかどうかを調べた上で、サーバ側の持つCA証明書を使用して、証明書を検証する。
(CA証明書に含まれる公開鍵を使用し、クライアント証明書に施されたCAの電子署名が正しいかどうかを検証する)

(2) クライアントは、その証明書の正当な持ち主か
クライアントが、証明書と対になる正しい秘密鍵を持っているかどうかを検証します。
ざっくり説明すると、
・サーバ・クライアントで予め同一のランダムデータを共有しておく。
・クライアントが、そのランダムデータに秘密鍵で署名を施してサーバに送信。
・サーバは、証明書に含まれる公開鍵を用いて、ランダムデータ・署名の対応が正しいことを検証する。

 正しい署名ができるのは秘密鍵の持ち主だけ、ということを利用しています。
 ※細かく言うと、ランダムデータの共有の方法や、MITM攻撃・署名の悪用への対策等の問題があるのですが…。

(1)から分かる通り、サーバ側での認証としては「信頼しているCAから発行された証明書を持っているか」が基本なのですが、証明書の情報(シリアルやコモンネーム等)で更に細かく制御することもできるでしょう。
(CGIやWebAP側での対応になるかもしれません)
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-16 01:26
引用:
また、Webサーバ側に自分でCAを準備した場合何か問題はありますか?

相手の認証になるため、
サーバ認証の場合のような「オレオレ証明書」にはならないと思うのですが、
どうなのでしょうか?


CAを独自運営する場合は、CA秘密鍵漏洩のリスクと対策、証明書発行管理のコストを考える必要があります。

…で、CA秘密鍵が漏洩した時に騙されて困るのは誰かと言いますと、今回はサーバのみです。
「不正に発行された証明書を使用して、悪意あるクライアントがサーバの認証をすり抜ける」というリスクがあるわけです。
※加えて、正規のクライアントの情報が漏洩するというリスクも付いてくるかも。

昨今話題のオレオレ証明書は、主にサーバ証明書に関わる話でして、
「不正に発行された証明書を使用して、悪意あるサーバがクライアントに対して身元を詐称する」というリスクになりますので、大分違いはあるかな、と思います。
※クライアント側から見れば、後者の方が影響範囲が大きい分、重大な脅威ではないかと。もちろん、一般論で、ですが。
1

スキルアップ/キャリアアップ(JOB@IT)