2012-04-07 14 views
11

公開鍵認証を使用してウェブサイトにログインするためのログインシステムを実装しようとしています。これが実現可能かどうかはわかりません。ウェブサイトのログイン用のユーザーの秘密鍵を確認する

これは私が行う予定ものです: -

  1. お申し込み時に、ユーザの公開鍵は、ウェブサイトに保存されます。
  2. ユーザーが後でログインしようとすると、Webサイトはユーザーに対応する秘密キーを要求します。
  3. ユーザーは、プライベートキーがサインアップ中に提供された公開キーと一致する場合、認証されます。

私は、自分の身元を確認するためにユーザーの秘密鍵を要求するサイト(startssl.comなど)を見ました(添付のスクリーンショットを参照)。そのようなシステムを実装するには何が必要ですか?

Screenshot of website asking for private key

+3

ですが、ユーザーは、それは目的を破って、秘密鍵だ提供されていない場合?秘密鍵はどのような場合でも非公開でなければなりません。通常行われる方法は、Webサイトがユーザー公開キーを使用してトークンを暗号化し、ユーザーが秘密キーを使用してそれを復号化してWebサイトに提供することです。 – Ikke

+1

これはプレーンな[クライアント認証]です(http://httpd.apache.org/docs/2.0/ssl/ssl_howto.html) – Raffaele

+0

はい、プライベートキーは常に非公開です。サーバーには送信されません。 startssl.comがスクリーンショットの秘密鍵の使用を確認するようにユーザーに求めている様子をご覧ください。私はそのようなものを探しています。 – Sparky

答えて

6

ただ、流れを明確にする

  1. ユーザーは、昔ながらのユーザ名とパスワードのペアを使用して、サインアップ。彼はまた、サーバがユーザの公開鍵を格納し、証明書内のユーザー
  2. 次回クライアントに関連付け
  3. (他のものは、後でプロファイル管理パネルから追加することができる)少なくとも一つの公開キーを入力するように求めています(ブラウザで処理され、ユーザーに透過的に行われる必要があります)、サーバ側のSSLエンジンはがクライアントをが知っているかどうかをチェックし、要求が処理されていればアプリケーションコードは、公開鍵とユーザの間のリンクを知っているため、ユーザを認証して認証します。クライアントは、ない特定し、サーバはサインインアップまたは手動ログインを許可するように、いくつかのページにリダイレクトする必要があります(おそらく、新しい公開鍵を追加する)
+3

[this](http://cweiske.de/tagebuch/ssl-client-certificates.htm)は、サーバ側の技術としてApacheとPHPを使った素敵なチュートリアルです。 – Raffaele

+0

まさに私が探していた@Raffaeleありがとうございました。 – Sparky