2017-10-09 5 views
0

私はIISのクライアント証明書認証に関する記事をかなり読んだことがありますが、ほとんどはクライアント証明書のRequiredモードについて話しています。この場合、認証はWebサーバー側で完全に行われ、証明書がないか無効である場合にユーザーはエラーページにリダイレクトされます。私が必要とするのは、クライアント証明書が存在する場合はそれをチェックし、結果をhttpヘッダーとしてバックエンドに渡すようにIISを構成することです。それは簡単にnginxまたはApache Webサーバーで行うことができます。クライアント認証はoptionalとして設定できます。次に、Webサーバーは証明書をチェックし、チェックの結果をアプリケーションのバックエンドにSSL_CLIENT_CERT(証明書のPEM表現)とSSL_CLIENT_VERIFY(チェックの結果 - SUCCESS、NONE、...)ヘッダーとして渡します。だから、バックエンドの部分では、私はヘッダーを読み取って、実際の認証を行うために値を使用することができます - データベース内のユーザーを見つける、認証トークンを発行します。 IISで可能ですか?はいの場合、証明書とチェック状態をhttpヘッダーとしてバイパスする方法に関するドキュメントがありますか?IISをセットアップしてクライアント証明書を確認し、httpヘッダーとしてバックエンドに渡すにはどうすればよいですか?

答えて

0

しばらくすると、私は私の質問に答えを書いています。

リバースプロキシとして機能するには、IISにARR拡張機能を設定する必要があります。次に、デフォルトのWebサイトに対してクライアント証明書認証を有効にすることができます。ここではいくつかのリンクは、それを達成する方法を説明します:

とリンク一般的に非常に強固なSSL/TLSハンドシェイクの説明や証明書のカップル:

基本的には、アプリケーション要求ルーティング(ARR)拡張はプロキシとして動作するIISのために有効にされるべきです。次に、プロキシバイパスルートを設定します。次に、IISサーバー用の有効なサーバー証明書を設定し、それを既定のWebサイトのhttpsバインディングで使用する必要があります。証明書は、ローカルコンピュータの信頼されたルート証明機関および中間証明機関に配置する必要があるCAによって発行される必要があります。次に、クライアント証明書の設定が[同意]の既定のWebサイトのSSL設定でSSLを要求する必要があります。この場合、Webサーバーに接続するクライアントには、サーバー証明書と同じCAによって発行された有効なクライアント証明書が要求されます。

実際、IISは、Webサーバーによって信頼されるルート発行者の識別名のリストをクライアントブラウザに送信します。ブラウザは、この名前とクライアントの信頼できる証明書の発行者との共通点を見つけ、交差点の発行者が発行した有効な証明書を探します。その後、ユーザはそれらのうちの1つを選択するか(または選択しない)、選択された証明書はCA証明書と照合される。証明書がチェックに合格した場合、要求はX-ARR-ClientCertヘッダーの証明書を使用してバックエンドアプリケーションに「リダイレクト」されます。ヘッダーの名前は、サーバー - >構成エディター - > system.webServer/proxy-> clientCertHeaderName IISパラメーターで変更できます。ユーザーが必要な証明書を選択しなかった場合、その要求はヘッダーなしでアプリバックエンドに「リダイレクト」されます。

チェックの状態は、SSL_CLIENT_VERIFYヘッダーにはまったく必要ないと思われます。証明書が有効な場合は、ヘッダーに渡されます。証明書がない場合、ヘッダーは空です。証明書がクライアントによって提供されたものの、無効である場合、要求は失敗し、バックエンドアプリケーションサーバーには「リダイレクト」されません。それはまれなケースですが、私には例があります。

サーバー証明書を識別名XXXでCAによって発行され、想像、および識別名XXXでCAによって発行された(クライアントコンピュータ上)クライアント証明書YYYがありますが、これらのCAはありません同じ(どちらかまたは両方が自己署名されています)。この場合、ブラウザで表示される証明書選択ダイアログに証明書が表示されますが、証明書は実際のWebサーバーCAに対してさらに検証をパスしません。

これだけです。また、IISは、一部のアプリケーションエンドポイント(アドレス)に対してのみクライアント証明書を要求する(または受け入れる)方法がないようです。私は、ウェブサイト全体を有効にすること以外は、他の選択肢を見つけられませんでした。

関連する問題