我们有传统的 SOAP Web 服务 ( https://dev-ms01/Services/default.asmx
),这些服务是用 asp.net 1.1 编写的,托管在 IIS7(win server 2008 标准)上,客户端通过提供客户端证书来使用 Web 服务。对于SSL Certificates
我们Accept
在此 IIS 上的设置
`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 服务 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)
机器位于安全网络中,无法直接从互联网访问。
在这种情况下,您需要在Proxy IIS10 Server with ReverseProxy (on host secure-dev-ms01)
仅有的并在 IIS7 中禁用 SSL 卸载和证书认证。
在此方案中,IIS10 负责 SSL 握手和证书验证。它将证书 (POM) 放入标头中,并通过包含此标头的纯 HTTP 将请求代理传递到 IIS7。如果您的 ASP 服务需要它们,X-ARR-ClientCert
您可能需要在重写 URL 规则中在 IIS10 上设置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 分别位于何处。