バックエンド IIS 用のクライアント証明書認証を備えた IIS ARR リバースプロキシ

バックエンド IIS 用のクライアント証明書認証を備えた IIS ARR リバースプロキシ

私たちは、IIS7(win server 2008 standard)でホストされているasp.net 1.1で書かれたレガシーSOAP Webサービス( https://dev-ms01/Services/default.asmx)を持っています。これは、クライアント証明書を提供することでクライアントが使用するWebサービスです。このIISのSSL Certificates設定については、Accept

`Client(Request with SSL Client Certificate)--> IIS7 (on host dev-ms01)--> Asp.Net SOAP WebServices`

secure-dev-ms01今、私はIIS7用のリバースプロキシを使用してプロキシIIS(Win Server 2016 64ビットホスト上のIIS10)を設定しようとしています。私はMSDNの記事に従いましたhttps://blogs.msdn.microsoft.com/friis/2016/08/25/setup-iis-with-url-rewrite-as-a-reverse-proxy-for-real-world-apps/以下のようにReverseProxyでURL書き換えを設定する

`Client(Request with SSL Client Certificate)--> Proxy IIS10 Server with ReverseProxy (on host secure-dev-ms01)--> IIS7 (on host dev-ms01) --> Asp.Net SOAP WebServices`

IIS10(ホストsecure-dev-ms01)でSSL Certificates私が選択した設定でAccept、以下のReverseProxy構成を試しましたここに画像の説明を入力してくださいプロキシWebサービスのURLを参照しようとすると、https://secure-dev-ms01/Services/default.asmxクライアント証明書が求められますが、クライアント証明書を提供した後、以下のエラーが表示されます。

403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied.

RevereProxy以下も試してみましたここに画像の説明を入力してくださいプロキシ Web サービスの URL を参照しhttps://secure-dev-ms01/Services/default.asmx、クライアント証明書を提供しましたが、以下のエラーが引き続き表示されます。また、上記の ReverseProxy 構成の両方のオプションのチェックを外してみましたがEnable SSL Offloading、それでも機能しませんでした。

403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied.

私はこのmsdnの記事を見つけましたhttps://blogs.msdn.microsoft.com/asiatech/2014/01/27/configuring-arr-with-client-certificate/これは、バックエンドサーバーSSL Certificatesの設定を変更することを示唆していますが(ただし、私たちの組織ではこれを採用することはできません)、ヘッダーからの証明書を使用してみてください。ただし、従来のasp.net 1.1サービスにコード変更を加えないようにしています。IgnoreX-ARR-ClientCert

バックエンド IIS7 のコード/構成変更の代わりに、リバースプロキシを使用した IIS10 の構成を微調整するだけで、クライアント証明書認証を使用した IIS ARR リバースプロキシをバックエンド IIS で動作させることができる関連記事を見つけることができませんでした。これを動作させるために誰か助けていただけませんか?

答え1

IIS7 (on host dev-ms01)インターネットから直接アクセスできない、安全なネットワーク内にマシンがあるものと想定します。

この場合、SSLオフロードとクライアント証明書認証を有効にする必要があります。Proxy IIS10 Server with ReverseProxy (on host secure-dev-ms01) のみIIS7 で SSL オフロードと証明書認証を無効にします。

このスキームでは、IIS10 が SSL ハンドシェイクと証明書の検証を担当します。証明書 (POM) をヘッダーに配置し、このヘッダーを含むプレーン HTTP 経由で IIS7 に要求をプロキシ渡します。ASP サービスでこれらのヘッダーを使用する場合は、IIS10 の書き換え URL ルールで、、およびヘッダーのX-ARR-ClientCertバイパスを設定する必要があります。X-Forwarded-ForX-Forwarded-ProtoX-Forwarded-SchemaX-Forwarded-Host

したがって、IIS10 サーバーの場合は次のようになります。

  • ARRを有効にする
  • IIS7 へのプロキシパスに URL 書き換えルールを追加する
  • 書き換えルールで上記のヘッダーをバイパスするように設定する
  • サーバー証明書を追加する
  • デフォルトWebサイトのSSL設定でSSLを要求する
  • クライアント証明書の設定を「承認」に設定する
  • サイトの匿名認証を有効にする
  • サーバー証明書を使用してhttpsバインディングを設定する

IIS7 サーバーの場合:

  • HTTPSバインディングを無効にする
  • SSLを必要としない
  • クライアント証明書を必要としない

うまくいけば、次の計画がうまくいくでしょう

Browser ---[HTTPS]---> IIS10 --[HTTP + headers]--> IIS7

headersX-ARR-ClientCert、X-Forwarded-For、X-Forwarded-Proto、X-Forwarded-Schema、および X-Forwarded-Host があります。

関連情報