1

私は自分の部門の内部 Web サイトのプロジェクト マネージャーであり、サイトへのユーザー名/パスワード認証の代替手段を設定しようとしています。理想的な方法は、許可された各デバイスで SSL クライアント証明書を使用してこれを実現することであるというのが私の印象ですが、数日分の情報を消化しようとし、OpenSSL に関する本を購入した後でも、どのように始めればよいか迷っています。

設定の要点は次のとおりです。

  • IIS 6 で実行されている Web サイト
  • OpenSSL モジュールがインストールされた PHP 5.2
  • Windows Server 2003
  • ログインするデバイスには、Windows XP/Windows 7 PC および Blackberry デバイスが含まれます
  • 現在サーバーにインストールされており、接続に必要な有効な CA 署名付き SSL 証明書

私がやりたいのは、接続しているデバイスからクライアント証明書を要求することです。利用できない場合は、LDAP 認証用のユーザー名とパスワードを要求します (これは現在機能しています)。認証されたら、ユーザー名とパスワードの組み合わせを使用せずに、このサーバーに接続するためにデバイスにインストールするためのクライアント証明書を生成およびダウンロードする機能をユーザーに提供したいと思います。

Cookie を使用して同じ種類の「自動ログイン」を行うことができることは知っていますが、より面倒な構成にもかかわらず、代わりにこの方法を使用するとセキュリティが強化されると考えました。

ここにいる誰かが、このようなことを始めるのに正しい方向を示してくれたり、これを達成するために完全に間違った方向に向かっているのか教えてくれることを望んでいました. 私の理解には多くのギャップがあると確信していますが、これまでに読んだすべてのチュートリアルは、一般的すぎて役に立たないか、理解する前に頭を悩ませている程度の複雑さに飛び込んでいます。数行以上。

共有できるアドバイスをお寄せいただきありがとうございます。

4

1 に答える 1

2

あなたの質問を読めば読むほど、これが私の答えだと思うので、これを私の答えにしようと思いました。

私は間違いなくこれをしません。AES で暗号化された「証明書」またはキーファイルが通常の認証プロセスを克服できるようにするには、クライアント マシン/デバイスという 1 つのものの信頼と完全性を要求する必要があります。

これは不可能です。クライアント マシンのセキュリティや安全性、およびクライアントのマシン上にあるデータに依存するべきではありません。ユーザーがすべてのサイトのブラウザ独自のパスワード データベースで「パスワードを記憶する」を設定していない限り、物理的なパスワードはコンピュータ上の物理的なファイルよりも盗むのがはるかに困難です。これが、ほとんどの物理的なパスワードが Web サイトのデータベースを盗むことによって突き止められる理由です。もちろん、自分のものを知っていれば、独自のコーディングとハッシュ関数を信頼して、クライアント コンピューターよりも優れた最高のセキュリティを提供できます。クライアント証明書が盗まれた場合、盗まれたかどうかを知る方法はありません。

セキュリティを強化するために、すべてのファイルを IP に制限する必要があると言うことができると思いますが、考えてみると、ほとんどのユーザーは ISP から動的に割り当てられた IP を使用するため、認証プロセスを回避する点が無効になります。私の ISP は私の IP を毎晩深夜に変更することを知っています。つまり、このファイルは毎日有効ではなくなります。つまり、1 日に 1 回、ユーザー名とパスワードを使用して再ログインする必要があります。

これは、少なくともセキュリティ上の悪夢です。ユーザー アカウントはハッキングされるのを待っているだけで、認証プロセスの不要なブロートウェアです。

ただし、厳重に管理されている場合(厳重に管理されている場合、個人的には大量認証を介しても外部からアクセスできるものはすべて厳重に保護されることはありません)イントラネットでは、PHPを使用して次を使用して証明書ファイルを生成します:http://php.net/manual/en/ function.openssl-csr-sign.php .

ここで重要なことは、証明書を評価できるように自分の側に保存することです。このために、いくつかの解析関数を使用する必要があります: http://www.php.net/manual/en/function.openssl-x509-parse.php取得したクライアント証明書で。

ただし、cURL には独自のクライアント側 SSL ハンドラがあります。次を参照してください。

LibCUrl を使用したクライアント証明書

これはうまくいけば役立つでしょう、

于 2012-08-19T16:46:22.487 に答える