バックグラウンド:
内部アプリケーションを 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 が正しく構成されていないことが原因であると確信しています (最初は IIS7 をセットアップしていませんでした)。これは、Failed Request Tracing を有効にして、生成された後続の .xml ファイルを調べたところ、500 エラーがスローされていることがわかったためだと思います。
Chrome は、「403 - 許可されていません: アクセスが拒否されました」ではなく、「Web ページへのアクセスが拒否されました」というメッセージをスローしています。これが役立つかどうかはわかりません。証明書を必須にしない場合、サイトが意図したとおりに機能することはわかっています。証明書を要求すると失敗します。
アプリケーション プールは .Net 4.0 | に設定されています。クラシック | ネットワーク サービス。