ブラウザがクライアント証明書を要求しない 質問する

ブラウザがクライアント証明書を要求しない 質問する

背景:

社内アプリケーションを 2 段階認証プロセスに更新しています。従来のユーザー名/パスワード フォームに加えて、クライアント証明書認証プロセス (スマート カード経由) を追加したいと考えています。アプリケーションは C# で記述され、IIS7 でホストされ、Chrome と IE8 を対象としています。

問題:

アプリケーションでユーザーにクライアント証明書を要求する際に問題が発生しています。Fiddler を利用してアプリケーションをデバッグしています。テスト クライアント証明書を Fiddler のユーザー ディレクトリ (C:\Documents and Settings\USER\My Documents\Fiddler2) に保存すると、アプリケーションは期待どおりに動作します。スマート カードを保護する PIN 番号の入力が求められ、正しく入力するとログイン フォームが表示されます。Fiddler を閉じると、代わりにアプリケーションが 403 Forbidden エラーをスローします (Fiddler は実行されておらず、証明書を指定していないため)。アプリケーションが証明書を正常に要求しない理由がわかりません。

現在のサーバー設定:

  • 自己署名証明書が作成されました
  • 443 バインディングは自己署名証明書を指しています
  • 匿名認証が有効になっています
  • 自己署名証明書は、信頼されたルート CA と中間 CA の両方に追加されました (別のユーザーが信頼されたルート CA だけでなく両方に追加して問題を解決したと読みましたが、どちらの設定も私たちには機能しませんでした)。
  • 信頼されたルート CA 内の不要な証明書の残りを削除しました (証明書が多すぎると SSL が詰まると他の場所で読みました)。

別のサーバーで最初からやり直す以外に試すアイデアがありません。問題が何なのか知っている人はいませんか? これはかなり簡単なことのように思えますが、私が何か小さなことを見逃しているようです。どんなアイデアでも歓迎します。

アップデート:

今日この問題にさらに時間を費やした結果、これは IIS7 が正しく構成されていないことに関係していると強く確信しました (最初にセットアップしたわけではありません)。失敗した要求のトレースを有効にし、生成される後続の .xml ファイルを確認したところ、500 エラーがスローされていたため、そう思うのです。

Chrome は、「403 - 禁止: アクセスが拒否されました」というメッセージではなく、「Web ページへのアクセスが拒否されました」というメッセージを表示します。これが役に立つかどうかはわかりません。証明書を必須にしない場合、サイトは意図したとおりに動作することはわかっています。証明書を必須にすると失敗します。

アプリケーション プールは、.Net 4.0 | クラシック | ネットワーク サービスに設定されています。

ベストアンサー1

問題は、ブラウザがクライアント証明書を提供するための要求を受け取らないか、またはそれをブロックするセキュリティ関連のオプションがあることです。IE は、Web サイトが正しいゾーン (イントラネットまたは信頼済みサイト) にある場合にのみ証明書を提供します。何よりもまずこれを確認してください。

それでも解決しない場合は、こちらを参照してください答え次のステップについては、netsh のドキュメントに次のように書かれています。

clientcertnegotiation
Optional. Specifies whether the negotiation of certificate is enabled or disabled. Default is disabled.

これを有効にすると、どんなに愚かなブラウザでも、認証のために証明書を提供する必要があることに気づくはずです。問題をさらに診断するには、次を使用します。ワイヤーシャーク交渉の実際の様子を見るために。

おすすめ記事