
我們有傳統的 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 服務 URL
https://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-For
、X-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。