运行仅支持 HTTPS 而不支持 HTTP 的网站是否可以接受?考虑在地址栏中输入纯域名的情况。通常网站会将用户重定向到 HTTPS 版本。
只提供 HTTPS 是有充分理由的。考虑以下场景:
- 用户是使用 REST API 与服务器通信的开发人员。
- 用户在发布潜在敏感信息时忘记了“http”末尾的“s”。
- POST 通过非安全通道传输有效载荷,容易受到常见的窃听。
- 只有在 POST 完成后,服务器才会向安全站点发送重定向代码
答案1
取决于站点。
只有当服务器根本不接受端口 80 上的连接时,才能防止出现上述情况;用户友好的重定向或甚至显示“使用 https!”的错误页面将允许发送未加密的 API 请求。当然,当它不起作用时,拨打电话的人应该在一次失败的尝试后注意到并修复他们的错误 - 希望他们没有使用敏感数据进行测试。
这次非安全通信尝试是否可以接受(希望是非敏感数据)完全取决于您的安全需求。
如果该站点仅用于 API 调用,那么关闭端口 80 就可以了。
如果用户将通过浏览器访问该网站(手动输入地址),那么不要指望能够关闭端口 80,而不会让用户感到困惑和烦恼。
答案2
我真的看不出有什么理由不这样做。如果您的网站必须始终保持安全,那么没有什么可以阻止您仅通过 SSL 提供服务。
以下是关于如何操作的知识库:Apache:将 http 重定向到 https Apache 安全连接 – 强制 HTTPS 连接
要仅允许 SSL 连接,您还可以使用SSLRequireSSL您的服务器配置中的指令。
(不确定这是否适合您,因为它会将整个服务器的端口 80 上的所有流量重定向到端口 443,但这也可以起作用):
修改 iptables 以将端口 80 重定向到端口 443:
--iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
--iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
--iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 443