如何强制 HTTPS 连接?

如何强制 HTTPS 连接?

我在 Ubuntu 14.04 家庭服务器上运行 apache。该服务器位于路由器后面,因此需要转发所有端口才能使用。

我已经为 HTTPS 转发了端口 443,但没有转发端口 80,因为我认为这样更安全。但是,现在我遇到了一个问题,每当我在https://输入服务器的 URL 时忘记输入时(例如通过浏览器访问 Web 界面时),我都会毫不意外地收到“服务器无响应”错误。

我真正希望发生的情况是:服务器永远不会通过端口 80 发送任何信息,并且如果有人尝试通过 http 连接,他们会被自动重定向到 https 地址。

是否有可能做到这一点?

此外,即使我(或任何目标用户)非常小心,从不通过 HTTP 进行通信,只通过 HTTPS 进行通信,打开端口 80 本身是否也存在安全风险?

答案1

由于所有浏览器都假设http://URL 使用端口 80,因此如果不打开端口 80,就无法进行重定向。

尽管如此,保持 80 端口开放几乎没有什么安全问题,仅有的重定向到 https 站点。很多站点都这样做。

在 apache 中,您可以向端口 80(非 SSL)vhost 添加类似这样的内容:

Redirect permanent / https://example.com/

另外,研究 HSTS 来提高您的安全性。

答案2

在这一点上我同意 EEAA,但作为替代方案,您也可以使用 HTML 执行以下操作。创建一个 HTML 页面并将其放入其中:

<META HTTP-EQUIV="Refresh" CONTENT="5; URL=https://someurl">

这样,您就无需通过任何配置更改进行任何端口转发或重定向。只需创建一个 HTML 文件,当您访问 HTTP 端时,该文件会将您重定向到 HTTPS。

相关内容