【问题标题】:accessing https://myIP gives unsecure connection, how to redirect to secured domain htaccess访问 https://myIP 会给出不安全的连接,如何重定向到安全域 htaccess
【发布时间】:2023-02-16 22:42:23
【问题描述】:

我的域有一个 SSL 证书,效果很好。

但是,如果我转到https://111.111.111.111(不是真实 IP),我会收到一条消息:连接不安全,证书不受信任.当然这是完全正确的,因为我没有 IP 的证书,我也不会得到(Lets Encrypt 不会那样做)。

我一直对 Apache2 配置文件和 .htaccess 文件感到困惑,无法将任何对 https://111.111.111.111 的请求重定向到我的真实域 https://www.example.com

这是我的 .htaccess 文件:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^111\.111\.111\.111$
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

如果我尝试连接到它,效果很好http://111.111.111.111,但是不是当我连接到https://111.111.111.111

我最初的想法是添加:

RewriteCond %{HTTP_HOST} ^https$ [NC]

多于

RewriteCond %{HTTP_HOST} ^111\.111\.111\.111$

但这是行不通的。

关于如何解决此问题的任何建议?

【问题讨论】:

  • 问题是:当您尝试连接到https://yourip 时,您的浏览器会尝试建立安全连接(密钥交换等)。不先连接就无法转发某人。想象一下,如果有人可以对 https 网站进行中间人攻击并悄悄地重定向您,那将非常不安全。
  • 所以你的意思是,如果没有获得 IP 地址本身的证书,这是无法修复的?
  • 是的。在 https 无处不在的时代,没有人真的希望通过 IP 地址访问 Web 服务器。这就是 SNI 的用途:单个 IP 地址可以托管任意数量的服务器(不同的主机名)。另外:这个问题与编程无关(参见help center),而是与设置相关的问题,因此不适合 stackoverflow
  • check-your-website.server-daten.de查看网站时抛出的错误。但对于大多数人来说,这似乎是一个相当无法修复的错误。感谢您的回答。
  • 如果您网站的<VirtualHost> 正在接受对此 IP 地址的请求,则用户在点击浏览器警告并接受“不安全证书”后将被重定向。不用说,这不是推荐用户采取的行动方案。或者,确保 direct requests to the server's IP address do not resolve to your website to begin with - 这需要在服务器级别通过创建默认 vHost 容器来捕获这些请求来完成。

标签: apache .htaccess mod-rewrite ssl-certificate


【解决方案1】:

在你的SSL 配置文件请执行下列操作:

<If "%{HTTP_HOST} == '<your ip>'">
    Redirect permanent / https://yourdomain.com/
</If>

在您的示例中,这是:

<If "%{HTTP_HOST} == '111.111.111.111'">
    Redirect permanent / https://example.com/
</If>

重定向在下面

modules/mod_alias.so

所以要为你的服务器启用模块,继续你的模组启用目录并执行以下操作(如果缺少符号链接)

sudo ln -s ../mods-available/alias.conf alias.conf
sudo ln -s ../mods-available/alias.load alias.load

【讨论】:

    猜你喜欢
    • 2021-11-05
    • 2016-05-16
    • 2018-06-27
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多