具有後端 IIS 用戶端憑證驗證的 IIS ARR ReverseProxy

具有後端 IIS 用戶端憑證驗證的 IIS ARR ReverseProxy

我們有傳統的 SOAP Web 服務 ( https://dev-ms01/Services/default.asmx),它是在 IIS7(win server 2008 標準)上託管的 asp.net 1.1 中編寫的,客戶端透過提供客戶端憑證來使用 Web 服務。對於SSL Certificates我們Accept在此 IIS 上的設置

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

secure-dev-ms01現在我正在嘗試使用 IIS7 的 revere 代理程式設定代理 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,我嘗試了以下反向代理配置在此輸入影像描述。當我嘗試瀏覽代理 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 服務 URLhttps://secure-dev-ms01/Services/default.asmx並提供客戶端證書,但仍看到以下錯誤。我還嘗試取消選中Enable SSL Offloading上述兩個 RevereseProxy 配置的選項,但這也不起作用

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設定Ignore(但我們不能在我們的組織中採用此設定)並嘗試使用標頭中的證書,X-ARR-ClientCert但我們試圖避免對舊版 ASP.NET 1.1 服務進行任何程式碼更改

我找不到任何相關文章可以使具有用戶端憑證驗證的IIS ARR ReverseProxy 適用於後端IIS,只需在具有ReverseProxy 的IIS10 上進行配置調整,而不是在後端IIS7 上更改代碼/配置,有人可以幫我完成這項工作嗎?

答案1

我假設您的IIS7 (on host dev-ms01)電腦位於安全網路中,無法直接存取網際網路。

在這種情況下,您需要啟用 SSL 卸載和用戶端憑證驗證Proxy IIS10 Server with ReverseProxy (on host secure-dev-ms01) 僅有的並在 IIS7 中停用 SSL 卸載和憑證驗證。

在此方案中,IIS10 負責 SSL 握手和憑證驗證。它將憑證 (POM) 放入X-ARR-ClientCert標頭中,並透過包含此標頭的純 HTTP 將請求代理程式傳遞到 IIS7。如果您的 ASP 服務需要使用它們,您可能需要在 IIS10 上的重寫 URL 規則中設定繞過X-Forwarded-ForX-Forwarded-Proto和標X-Forwarded-Schema頭。X-Forwarded-Host

因此,對於您的 IIS10 伺服器:

  • 啟用ARR
  • 新增重寫 URL 規則以代理傳遞到 IIS7
  • 在重寫規則中設定繞過上述標頭
  • 新增伺服器證書
  • 在預設網站的 SSL 設定中需要 SSL
  • 將客戶端憑證設定為接受
  • 為您的網站啟用匿名身份驗證
  • 設定 https 與伺服器憑證的綁定

對於 IIS7 伺服器:

  • 禁用 HTTPS 綁定
  • 不需要 SSL
  • 不需要客戶端證書

希望你能讓下一個計劃發揮作用

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

其中headers是 X-ARR-ClientCert、X-Forwarded-For、X-Forwarded-Proto、X-Forwarded-Schema 和 X-Forwarded-Host。

相關內容