【发布时间】: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