Iis ISAPI重写——”;将非www版本重定向到www;使用SSL规则

Iis ISAPI重写——”;将非www版本重定向到www;使用SSL规则,iis,url-rewriting,isapi-rewrite,Iis,Url Rewriting,Isapi Rewrite,我正在使用一个名为:Helicon Tech的ISAPI Rewrite 3Lite(一个“用于IIS的apache.htaccess mod_Rewrite兼容模块”)的工具 我已经应用了“将非www版本重定向到www”规则(from:)。i、 e: RewriteEngine on RewriteCond %{HTTPS} (on)? RewriteCond %{HTTP:Host} ^(?!www\.)(.+)$ [NC] RewriteCond %{REQUEST_URI} (.+)

我正在使用一个名为:Helicon Tech的ISAPI Rewrite 3Lite(一个“用于IIS的apache.htaccess mod_Rewrite兼容模块”)的工具

我已经应用了“将非www版本重定向到www”规则(from:)。i、 e:

RewriteEngine on

RewriteCond %{HTTPS} (on)?
RewriteCond %{HTTP:Host} ^(?!www\.)(.+)$ [NC]
RewriteCond %{REQUEST_URI} (.+)
RewriteRule .? http(?%1s)://www.%2%3 [R=301,L]
这可以正常工作,但是当与SSL一起使用时,浏览器警告有一个小问题。 假设我想要一个url请求,如:重新定向到: 浏览器将显示警告:“此网站提供的安全证书是为其他网站的地址颁发的。”这是有意义的,因为我们的SSL证书仅适用于“www.MyDomain.com”(而不是“MyDomain.com”)。如果您单击“继续访问此网站”,它会很好地重定向到所需的url,一切正常

我的问题:是否可以做些什么来避免出现浏览器SSL证书警告?(最好不必更改SSL证书)

谢谢

编辑:


我希望有某种方法可以让ISAPI重写来更改url,这样IIS就不会“看到”到“MyDomain.com”的请求,而只看到更改后的请求:“www.MyDomain.com”(这样SSL证书警告就不会出现)。我想这可能是个时间问题。但是看起来事件的时间是固定的,所以IIS总是在原始请求的上下文中检查SSL证书?有人能确认吗?

如果您的证书仅对
https://www.foo.com
然后请求
https://foo.com
将始终收到证书不匹配消息

通配符证书通常很昂贵,但如果你四处逛逛,你可以找到一个价格接近普通证书的证书

显而易见的解决方案是不向
https://foo.com
如果所有活动都要在
www
子域上进行。毕竟,通过向
https://xyz.foo.com
,但这不是问题,因为没有理由在那里发送流量。类似地,可能没有理由将流量发送到
https://foo.com


针对您的更新:

我希望有某种方法可以让ISAPI重写来更改url,这样IIS就不会“看到”到“MyDomain.com”的请求,而只看到更改后的请求:“www.MyDomain.com”(这样SSL证书警告就不会出现)。我想这可能是个时间问题。但是看起来事件的时间是固定的,所以IIS总是在原始请求的上下文中检查SSL证书?有人能证实这一点吗

这不是一个真正的时间问题。IIS必须“查看”请求才能重定向请求,并且必须在每个请求上显示其标识。当服务器的标识与主机名不匹配时,要求符合要求的浏览器向用户发出警报(或者干脆“挂断”)

如果主机名可用,客户端必须根据 服务器的证书消息中显示的服务器标识, 为了防止中间人的攻击

[……]

如果主机名与证书中的标识不匹配,则用户 面向客户机必须通知用户(客户机可能会给出 用户在任何情况下都有机会继续连接)或 使用错误的证书错误终止连接


根据您的编辑更新了我的答案。