无法设置 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>
我有一个 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>