11

myopenid と同じことをしたいのですが、ログインしたら、SSL 証明書を生成するボタンをクリックできます。次に、ブラウザはこの証明書をダウンロードして保存します。後で yourid.myopenid.com に戻ると、ブラウザは保存された証明書を認証に使用できるため、パスワードは必要ありません。

私の質問は、これを機能させるために何が必要ですか? 証明書を生成するにはどうすればよいですか? それらが提示された後、それらを検証するにはどうすればよいですか?

私のスタックは Passenger を使用した Apache 上の Rails ですが、特にこだわりはありません。

4

5 に答える 5

8

これらは通常、クライアント側の証明書と呼ばれます。

私は実際には使用していませんが、restful-authentication の修正版がここにあります。

ニック博士の投稿でこれを見つけました

于 2008-08-26T17:51:06.487 に答える
2

サーバーによって異なりますが、私が知っている最も簡単な解決策は、Apache を使用することです。

FakeBasicAuth

「このオプションを有効にすると、クライアント X509 証明書のサブジェクト識別名 (DN) が HTTP 基本認証ユーザー名に変換されます。これは、標準の Apache 認証方法をアクセス制御に使用できることを意味します。ユーザー名はサブジェクトのみです。クライアントの X509 証明書 (OpenSSL の openssl x509 コマンドを実行することで確認できます: openssl x509 -noout -subject -in certificate.crt)。ユーザーからパスワードが取得されないことに注意してください...」

レールについてはわかりませんが、通常の REMOTE_USER 環境変数には何らかの方法でアクセスできるはずです。

于 2008-08-26T18:01:41.237 に答える
1

証明書を生成する場合は、クライアントにキーペアを生成させ、少なくとも公開キーを送信する必要があります。これは、FirefoxでJavascript呼び出しを介して行うことができます。これはcrypto.generateCRMFRequestです。他のブラウザでも利用できるブラウザ固有の方法があると思います。ただし、最初に、公開鍵を取得したら証明書を発行する方法を理解する必要があります。

OpenSSLを使用してサーバー上で何かをスクリプト化することはできますが、Firefoxが送信するCRMF形式ではなく、CSRのサポートが組み込まれています。したがって、CRMFをCSRに変換するためのコードを作成する必要があります。これには、ある種のDER処理機能が必要です。ここでは表面をかじっただけです。おもちゃのアプリケーションであっても、CAの操作は簡単ではありません。

OpenIdやPKIソリューションなどのSSOソリューションは重複しており、PKIには優雅さがあります。しかし、悪魔は細部に宿っています。このアプローチが長い間行われてきましたが、政府や軍のアプリケーションでのみ普及したのには十分な理由があります。

これを追求することに興味がある場合は、CAサービスを開発するプラットフォームに固有のいくつかの質問をフォローアップしてください。

于 2008-08-28T20:39:27.220 に答える
1

ブラウザ固有のコードを使用して、クライアントのブラウザで証明書を生成できます。この質問を参照してください

Ruby で OpenSSL を使用してサーバー側で SSL クライアント証明書を生成することもできます (この q を参照)。(これはブラウザ固有のコードがなくてもどのブラウザでも機能しますが、サーバーはクライアントの秘密鍵を生成するため、暗号の純粋主義者には理想的ではありません。)

それらを生成するために使用する方法に関係なく、クライアント証明書を要求するように Web サーバーを構成する必要があります。例については、Apache ドキュメントを参照してください。

于 2012-10-29T14:49:20.673 に答える
0

私はこの問題の解決策に取り組んできました。私は同じことをしたかったのですが、サードパーティのプロバイダーの有無にかかわらず、他の多くのWebサイト所有者がこの機能を望んでいることを知っています。

証明書ベースの認証を処理するために必要なサーバーセットアップとFirefoxプラグインを作成しました。mypassfree.comにアクセスして、無料のFirefoxプラグインを入手してください。素敵なインストーラーでまだパッケージ化していないので、サーバーのセットアップについて私にメールしてください(そのページのリンク)。

サーバーのセットアップはApache2+OpenSSL + Perlです(ただし、perlスクリプトは任意の言語で書き直すことができます)

ジョナサン

于 2009-01-09T19:58:10.043 に答える