无法设置 UrlRewrite 将 HTTP 重定向到 HTTPS 并需要客户端证书

Can't set up UrlRewrite to redirect HTTP to HTTPS and require client certificate

我有一个 IIS 站点,其中: - 我需要将 HTTP 重定向到 HTTPS - 我需要要求客户证书

第一部分工作正常,有一个从 HTTP 重定向到 HTTPS 的简单规则。

但是,如果我将网站的 SSL 设置修改为需要 SSL 和客户端证书,如果我尝试使用 http 访问该网站,而不是获得重定向,则会出现错误。

有没有办法让它工作?

解决方案是在 IIS 中为同一个域设置 2 个不同的站点:

  • 一个只绑定到 HTTP,通常在端口 80
  • 另一个绑定到 HTTPS,通常在 443 端口,带有它的证书

第一个站点只是一个空站点,它只有一个 web.config 文件,可将所有请求重定向到 https。这是它的内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <system.webServer>
  <rewrite>
   <rules>
     <rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard"
      stopProcessing="true">
      <match url="*" />
      <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" />
     </rule>
    </rules>
  </rewrite>
 </system.webServer>
</configuration>