【问题标题】:How to redirect HTTPS IP to domain如何将 HTTPS IP 重定向到域
【发布时间】:2019-07-21 23:56:13
【问题描述】:

我有一个托管在 IIS 8.5 上的 asp.net 网站,我使用以下规则将所有流量重定向到 HTTPS:

<rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
    </conditions>
    <action type="Redirect" url="https://example.com{REQUEST_URI}" redirectType="Temporary" />
</rule>

当用户使用https://192.168.0.3 访问站点时,这不起作用

Your connection is not private
Attackers might be trying to steal your information from 192.168.0.3 (for example, passwords, messages, or credit cards). Learn more
NET::ERR_CERT_COMMON_NAME_INVALID

安装的 SSL 是针对域 example.com 的,而且请求似乎没有到达 IIS,所以我无法控制它....?我无法控制用户强制他们使用域 url。

如何将https:/192.168.0.3 重定向到https://example.com

【问题讨论】:

  • 你需要一个条件来检查{HTTP HOST}
  • 您能否建议如何做到这一点,因为会满足“端口不安全”条件并且不会发生 URL 重定向。如果主机是 IP 并且安全,我需要以某种方式添加重定向条件,然后重定向到 https://domain

标签: asp.net redirect iis https url-redirection


【解决方案1】:

鉴于 HTTPS 私有 IP 永远不会起作用(您无法为其获得有效证书),我假设您已经到了这里,因为您已经获得了从 http://192.168.0.3https://192.168.0.3 的全局重定向。只需修复该重定向,使其从http://192.168.0.3 直接转到https://example.com

【讨论】:

  • 是的,我已经这样做了。 192 IP 只是一个例子。真实 IP 用于公众可访问的生产站点。所以主要问题是https://IP 没有到达 IIS,所以我无法控制它的重定向。也许可以在操作系统级别做一些事情......
  • 如果由于证书错误而无法到达站点,您需要获取证书并安装它。
  • 这个答案让我意识到我在玩 .htaccess 文件是多么愚蠢。 +1
【解决方案2】:

您可以做的是在 IIS 中创建另一个网站并将 IP 地址绑定到它。然后在该网站中创建一个 Default.aspx 页面,并重定向到正确的域。

<%@ Page Language="C#" %>
<%
    Response.Redirect("https://example.com");
%>

或者只是一个带有 url 重写的 web.config 文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect" stopProcessing="true">
          <match url="(.*)" />
          <action type="Redirect" redirectType="Permanent" url="https://example.com" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

【讨论】:

  • 我已经尝试过了,似乎浏览器在获得与最初输入的基于 IP 的 url 不匹配的域的证书后立即停止,因此 IIS 没有机会重定向.. 至少这就是我的理解
  • 这不起作用,因为如果不修改提前连接的每个浏览器中的证书存储,您将无法在私有 IP 上提供有效证书。
【解决方案3】:

尝试 SSL 保护本地 IP url 总是会出现证书错误 AFAIK

阅读本文以了解更多信息:https://security.stackexchange.com/questions/103524/lets-encrypt-for-intranet-websites

编辑:我对 IIS 不太了解,但在这件事上发现了这个,可能它会帮助你解决这个问题:https://blogs.msdn.microsoft.com/robert_mcmurray/2013/11/15/how-to-trust-the-iis-express-self-signed-certificate/

【讨论】:

  • 我认为你是对的,即使 facebook 也没有将 https://157.240.22.35 重定向到 https://facebook.com。与谷歌相同https://172.217.5.110/
  • 问题是,受信任的证书供应商无法验证您本地域的验证,因为它无法通过公共 dns 访问它。我能想到的唯一真正的选择是将证书作为受信任的证书安装在用户机器上。但话又说回来,IIS 不是我的域。好看!
  • @VaibhavGarg 这些 IP 都不是私有的,因此不相关。您绝对可以将证书放在 IP 上,而不是私有的,例如 1.1.1.1
猜你喜欢
  • 1970-01-01
  • 2016-01-09
  • 2021-03-26
  • 2021-03-25
  • 2022-01-14
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 2019-09-25
相关资源
最近更新 更多