具有用于后端 IIS 的客户端证书身份验证的 IIS ARR ReverseProxy

具有用于后端 IIS 的客户端证书身份验证的 IIS ARR ReverseProxy

我们有传统的 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-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

headersX-ARR-ClientCert、X-Forwarded-For、X-Forwarded-Proto、X-Forwarded-Schema 和 X-Forwarded-Host 分别位于何处。

相关内容