HTTPS唯一的网站

运行只能在HTTPS而不是HTTP上运行的网站是可以接受的。 考虑在地址栏中input纯域名的情况。 通常网站将用户redirect到HTTPS版本。

有一个很好的理由,只想提供HTTPS。 考虑这种情况:

  • 用户是使用REST API与服务器通信的开发人员。
  • 用户在发送潜在的敏感信息时会在“http”末尾忘记“s”。
  • POST通过一个不安全的通道容易受到通常的窃听而连线。
  • 只有在POST完成后,服务器才会将redirect代码发送到安全站点

取决于网站。

上面列出的情况只能在服务器不接受端口80上的连接的情况下才能被阻止; 一个用户友好的redirect,甚至一个错误页面,说“使用https!” 将允许发送未encryption的API请求。 当然,如果它不起作用,那么打电话的人应该希望在一次失败的尝试后注意并修复他们的错误 – 希望他们不要用敏感数据进行testing。

无论这种单一的非安全通信尝试是否可以接受(希望使用非敏感数据)完全取决于您的安全需求。


如果该网站仅用于API调用,那么离开端口80就可以了。

如果用户将在浏览器中访问该站点(手动input地址),那么不要期望能够保持80端口不被混淆和恼火的用户。

我真的没有看到任何好的理由。 如果您的网站必须始终保持安全,则无法阻止您通过SSL提供服务。

以下是关于如何执行此操作的知识库: Apache:将httpredirect到https Apache安全连接 – 强制使用HTTPS连接

为了只允许SSL连接,你也可以在服务器configuration中使用SSLRequireSSL指令。

(不知道这是否适合你,因为它会将整个服务器的端口80上的所有stream量redirect到端口443,但是这也可以工作):

修改你的iptables将端口80redirect到端口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