有什么理由不在网站上执行HTTPS?

我频繁的一个网站最终决定启用TLS到他们的服务器,而不是像在那里的很多网站那样强制它。 维护者声称TLS 必须是可选的。 为什么?

在我自己的网站上,我很早就设置了强制使用TLS和HSTS,弱密码套件也被禁用。 纯文本访问保证被HTTP 301封装到受TLS保护的版本。 这是否会对我的网站造成负面影响?

在这个时代,TLS + HSTS是您的网站由可以信任的专业人员pipe理的标记,可以知道他们在做什么。 这是一个新兴的最低标准的可信度,正如谷歌所表明的,他们将提供积极排名的网站,这样做。

另一方面是最大的兼容性。 在那里还有老客户,特别是在世界上不是美国,欧洲或中国的地区。 简单的HTTP将始终工作(虽然,并不总是很好 ,这是另一回事)。

TLS + HSTS:优化search引擎排名
纯HTTP:优化兼容性

取决于对你更重要的事情。

简单的只读网站有一个很好的理由不使用HTTPS。

  • Webcaching无法caching通过HTTPS传输的图像。
  • 世界上有些地区的国际关系非常低速,所以要依靠高速caching。
  • 托pipe来自其他域的图像需要的技能,你不能指望小型只读网站的运营商有。

维护者声称TLS必须是可选的。 为什么?

要真正知道这个问题的答案,你必须问他们。 但是,我们可以做出一些猜测。

在企业环境中,IT部门通常会安装一个防火墙,检查恶意软件的stream量传入和传出,可疑的类似CnC的活动,被认为不适合工作的内容(例如色情内容等)等。stream量encryption时,这变得更加困难。 基本上有三种可能的答案:

  1. 放弃监测这个stream量。
  2. 在用户的机器上安装根CA,以便执行MitM解密和检查。
  3. 批量encryptionstream量。

对于一个有关的系统pipe理员来说,这些选项都不是特别有吸引力的。 攻击企业networking的威胁非常多,保护公司免受攻击是他们的工作。 但是,阻止大量网站完全引发了用户的愤怒,而安装根CA可能会感觉有些低落,因为它引入了用户的隐私和安全考虑。 我记得当他们第一次打开HSTS时看到(对不起,无法find线程)系统pipe理员请愿书reddit,因为他正是在这种情况下,并不想仅仅因为他被业务阻止色情为重点的subreddits。

技术的轮子不断涌动,你会发现许多人认为这种保护是老式的,应该逐步淘汰。 但是还有很多人在练习,也许是你的神秘维护者所关心的。

有几个很好的理由使用TLS

(只有less数边缘理由不这样做)。

  • 如果该站点有任何身份validation,则使用HTTP公开来窃取会话和密码。
  • 即使在静态的,仅仅是信息的网站,使用TLS确保没有人篡改数据。

  • 自从Google I / O 2014以来,Google已经采取了几个步骤来鼓励所有网站使用HTTPS:

    • 谷歌一直在帮助网站pipe理员configuration他们的服务器更安全,但也使用HTTPS作为排名信号 。
    • 最近,Google Chrome已经开始将HTTP网站标记为不安全 , 这是将所有HTTP网站标记为不安全的长期计划的一部分
    • Google Chrome Developers团队的Mythbusting HTTPS讲座清楚地表明了他们的态度。
  • Mozilla安全博客还宣布,通过使所有新function仅用于保护网站,逐步取消非安全网站的浏览器function,特别是对用户的安全和隐私构成风险的function,而弃用非安全HTTP 。

执行TLS还有几个很好的理由

如果你已经有了一个广泛信任的证书,为什么不总是使用它? 实际上所有当前的浏览器都支持TLS,并且已经安装了根证书。 多年来唯一的兼容性问题是Android设备和缺less中间authentication机构,因为Android只能直接信任根CA. 通过configuration服务器将证书链发送回根CA可以轻松防止这种情况。

如果您的维护人员仍然希望允许HTTP连接,而不是301 Moved Permanently移动, 那么确保访问某些真正的旧浏览器或移动设备, 浏览器无法知道您已经configuration了HTTPS 。 此外,您不应该部署没有301 Moved Permanently HTTP严格传输安全性(HSTS) :

 7.2. HTTP Request Type If an HSTS Host receives a HTTP request message over a non-secure transport, it SHOULD send a HTTP response message containing a status code indicating a permanent redirect, such as status code 301 (Section 10.3.2 of [RFC2616]), and a Location header field value containing either the HTTP request's original Effective Request URI (see Section 9 "Constructing an Effective Request URI") altered as necessary to have a URI scheme of "https", or a URI generated according to local policy with a URI scheme of "https"). 

Tor项目Electronic Frontier基金会认可了为这两种协议configuration的各种站点的问题,并通过多浏览器HTTPS Everywhere扩展来解决:

networking上的许多站点通过HTTPS提供一些有限的encryption支持,但使其难以使用。 例如,他们可能默认为未encryption的HTTP,或者使用链接填充encryption的页面回到未encryption的站点。

混合内容也是一个巨大的问题,因为可能通过修改通过非安全HTTP连接加载的JavaScript或CSS来对HTTPS站点进行XSS攻击。 因此,目前所有的主stream浏览器都提醒用户有关混合内容的页面,并拒绝自动加载。 这使得维护一个没有301redirect的站点很困难 :你必须确保每个HTTP页面只加载HTTP维度(CSS,JS,图像等),每个HTTPS页面只加载HTTPS内容。 对于两者都具有相同的内容,这是非常难以实现的。

这一切都归结于您的安全要求,用户select以及隐含降级的风险。 禁用旧密码服务器端在很大程度上是必要的,因为浏览器将愉快地通过用户体验/方便的名义上的客户端绝对可怕的密码。 确保没有任何依赖于安全通道的用户无法通过不安全的方法到达,这当然也非常合理。

不允许我明确降级到不安全的HTTP,当我认为你的博客文章比Python更喜欢Python(不是说你做,只是一个通用的例子)是不是我介意的间谍或公众知道我的访问只是在我的方式没有理由,假设HTTPS将是微不足道的。

目前,embedded式系统不具备开箱即用的能力,或者在旧的实现方式上使用TLS(我认为这很糟糕,但是作为embedded式embedded式系统的高级用户设备在这里],我有时不能改变这一点)。

下面是一个有趣的实验:尝试通过HTTPS从上游OpenBSD站点下载最新版本的LibreSSL,并使用足够旧的TLS / SSL实现。 你将无法做到。 我有一天在一台装有旧版OpenSSL的设备上试过,从2012年开始,因为我想将这个embedded式系统从源代码升级到更安全,更新的东西 – 我没有奢侈的预编译包。 我尝试的错误信息并不完全直观,但我想这是因为我的旧版OpenSSL不支持正确的东西。

这是唯一的例子,HTTPS实际上可能会损害人们:如果您没有最近预build的软件包的奢侈品,并希望通过从源代码构build来解决问题,则会被locking。 谢天谢地,在LibreSSL的情况下,你可以退后一步明确地请求HTTP。 当然,这不会使已经改写stream量的攻击者免于被攻击者的攻击,可以用源代码版本replace源代码包,并重写所有在你浏览的网页上可以下载的软件包的HTTP体系中的所有校验和,但是它仍然有用更常见的情况。

我们大多数人不是从APT拥有的不安全的下载(Advanced Persistent Thread:国家情报机构的安全术语以及其他资源极其严重的networking威胁)。 有时候我只想写一些纯文本文档或者一个小程序,我可以很快审计它的源代码(例如我自己在GitHub上的小工具/脚本)到一个不支持最新密码套件的框中。

就我个人而言,我会问这个问题:你的内容是一个人可以合法地决定“我可以接触到公共知识”吗? 对非技术人员来说,对于您的内容是否意外降级为HTTP会有真实的风险吗? 减轻您的安全需求,为您的用户提供强制隐私要求,并降低隐性降级的风险,以防止用户了解根据具体情况进行知情select而不安全的风险。 对于你的网站来说,没有理由不强制执行HTTPS是完全合法的,但我认为公平的说,在那里仍然有很好的HTTP使用情况。

这里有很多的讨论,为什么tls是好的 – 但从来没有像原来的post那样被问到。

Maxthon问了2个问题:

1)为什么有一个随机的,未命名的网站决定保持http和https的存在

2)是否对Maxthon只对301请求响应提供了负面影响

关于第一个问题,我们不知道提供商为什么select保留http和https网站。 可能有很多原因。 除了关于兼容性,分布式caching以及关于地理政治可访问性的一些提示之外,还有一个关于内容集成的考虑,并且避免关于不安全的内容的难看的浏览器消息。 正如阿尔瓦罗所指出的那样,TLS只是安全方面的冰山一angular。

第二个问题是可以回答的。 在实际需要https进行安全操作时,通过http暴露您的网站的任何部分,为攻击提供了可利用的载体。 但是,为了确定哪里的stream量不正确地指向您的站点上的端口80,并确定原因,确保这一点是有道理的。 也就是说,既有负面影响,也有积极影响的机会,最终结果取决于您是否以pipe理员身份完成工作。

Sysadmin1138表示https影响了排名。 虽然谷歌已经表明,它确实影响排名,但我所看到的唯一可靠的研究表明,差异很小。 对于那些应该更好地声明,因为排名靠前的网站更有可能拥有https存在的人来说,这并不是一个好消息, 因此 https的存在提高了排名。

在过去,我不得不使用HTTP而不是HTTPS,因为我想从其他地方<embed>来自其他地方的页面,而这些页面是通过HTTP提供的,否则它们将无法工作。

这不是一个好的理由,因为这意味着你有坏/破/不安全的客户端,但是如果有自动化的进程通过现有的http:// url访问资源,有可能有些甚至不支持https(例如busybox wget,它在内部没有TLS支持,最近只是通过opensslsubprocess添加了它),如果它们被redirect到一个他们不能遵循的https url,就会中断。

我会试图通过编写redirect规则来排除未知(或已知的)用户代理string被redirect,并让他们通过http访问内容(如果他们想要的话),以便实际的浏览器都可以从中受益强制https / hsts。

在网站上使用HTTP而不是HTTPS的原因很less。 如果您的网站处理任何types的交易或存储任何types的敏感或个人数据,如果您希望数据安全,则必须绝对使用HTTPS。 我会看到不执行HTTPS的唯一体面的原因是,如果您的网站依赖于caching,因为HTTPS不能用于caching。 但是,为了确保您的网站的安全,往往值得牺牲一些性能。 您的客户也可能不支持HTTPS,但真的在2017年,他们应该。