首页>网络安全资讯>为什么我们需要做更多的工作来减少SSL证书的生命周期

为什么我们需要做更多的工作来减少SSL证书的生命周期

本文由Scott Helme发布在个人安全博客中,原文请戳此处

在互联网加密的早期,你可以获得任意有效期的证书。那些日子已经一去不复返了,随着时间的流逝,我们才意识到我们需要做更多的工作来大大降低证书的最长有效期,这样做有很多不同的原因。下面就让我们来看看这些原因具体是什么。

证书有效期的历史

最初,证书颁发机构在它所颁发的证书的有效期上是不受任何限制的。在2000年代的时候,GoDaddy会很愉快地颁发给你一份有效期为10年的证书!想象一下,不需要更新,不需要处理,也不需要艰苦地工作。你只需要安装好这份证书,然后在将近十年的时间内,你都可以忘掉它了!有很多这样的例子,所以我从Censys中找了几个。你可以去这里这里还有这里看一看这些例子。如果你想看看完整的搜索记录以及更多的例子,你可以在这里找到它们。虽然看起来这似乎是个不错的主意,但实际上情况并不是这样,其中有很多原因,我将会深入讨论,但首先,我想让大家了解一下我们目前在证书有效期方面的基本立场。

对证书的最长有效期的第一个限制是出现了证书颁发机构/浏览器论坛(CAB论坛)以及他们提出的的“基准需求”文档。这个论坛通常被称为“CAB论坛”,它是对证书颁发机构如何按照“基准需求”(BR)中的规则颁发和管理公开可信证书的行为进行管理的机构。如果我们回过头来看看第一版的BR(它是在2011年11月22日被讨论通过并在2012年7月1日生效的),我们可以看到这一限制是如何被引入的。这一最早版本的文档的第9.4部分是这样表述的:

本文档生效后颁发的证书,有效期不得超过60个月。

这是对证书颁发机构的第一个限制,但即使是有效期为5年的证书也不会长期存在。为了让GoDaddy开心,引入了5年的限制,但很快就被降低到了39个月。

除下列情形外,2015年4月1日以后颁发的证书有效期不得超过39个月。

自从第一个版本的BR发布以来,已经有3年时间了,5年的最长证书有效期已经被降至3年多一点。2015年4月1日以来,我们的证书的最长有效期一直是39个月,而在最近,我们正努力将证书的最长有效期进一步缩短。

目前的证书有效期

在2017年2月,CAB论坛针对谷歌的Ryan Sleevi提出的一项议案进行了投票,将证书的最长有效期缩短至仅398天,这是网络安全方面的巨大进步。遗憾的是,这次投票并没有通过,而且遭到了广泛的反对,在所有参加投票的证书颁发机构中,只有一家投票赞成。以下是投票情况:

证书颁发机构的投票情况——共计25票(不包括弃权票)

1票赞成:Let’s Encrypt

24票反对:DigiCert, Entrust, AS Sertifitseerimiskeskus, Izenpe, ANF Autoridad de Certificación, Comodo, Certinomis, HARICA, GlobalSign, Quo Vadis, GoDaddy, Actalis, Symantec, Trustwave, CFCA, Secom, TWCA, WoSign, Certum, OATI, Buypass, SHECA, CNNIC, Cisco

3票弃权:Logius PKI, SwissSign, Chunghwa Telecom

浏览器厂商的投票情况——共计4票(不包括弃权票)

2票赞成:谷歌、Mozilla

2票反对:微软、奇虎360

1票弃权:苹果

鉴于投票未能将证书最长有效期缩短至398天,有关方面又于2017年3月提出了一项新的议案,该议案试图将证书最长有效期限制在825天以内。这次议案获得了通过,投票情况如下:

证书颁发机构的投票情况——共计27票(包括弃权票)

24票赞成:Entrust Datacard, TurkTrust, Izenpe, Certinomis, DigiCert, Amazon, CNNIC, HARICA, GlobalSign, WoSign, Disig, Trustwave, Let’s Encrypt, Quo Vadis, SHECA, CFCA, OATI, Comodo, Buypass, Logius PKIoverheid, Cisco, Symantec, Certum, SwissSign

0票反对:

3票弃权:ANF Autoridad de Certificación, Secom, Actalis

浏览器厂商的投票情况——共计6票(包括弃权票)

5票赞成:苹果、奇虎360、微软、Opera、谷歌

0票反对:

1票弃权:Mozilla

这意味着,从2018年3月起,所有新颁发的证书的最长有效期将被限制在825天以内!这是更大范围内网络安全的一大进步,我希望今年晚些时候再进行一次投票,争取将证书最长有效期再次缩短到398天。也许这次将证书最长有效期限制到825天的小小进步将足以鼓励我们下一步的努力,但我们现在只能等待和观望了。如前所述,我们已经清楚地表明了我们在证书有效期问题上的立场和观点,那么现在就让我们来看看,为什么我们需要缩短证书有效期,这么做到底能带来哪些好处。

为什么我们需要更短的证书有效期

乍一看,似乎更短的证书有效期会带来痛苦,人们不得不更加频繁地更新它们,但实际上,缩短证书的寿命会在安全方面给你带来很大的好处。

证书撤销机制已被破解

你可以通过证书撤销来阻止攻击者在窃取你的私钥之后使用你的证书。如果我能够窃取域名paypal.com的私钥,或者他们像无人机制造商大疆(DJI)最近所做的那样不小心把私钥发布到了GitHub上,那么我现在就可以使用这个证书来证明我就是paypal.com,可以拦截/解密该域的网络通信,并且还能在用户的浏览器地址栏中显示绿色的https标识。这是一个非常糟糕的情况,我们需要一种机制来阻止这种情况发生,这个机制就是证书撤销。然而不幸的是,证书撤销机制被破解了。我们所说的破解不仅仅是受到了一点点损坏,你可以去读一读我刚才给出的链接中的文章,该机制已经被完全破解了。在我假设的我窃取paypal.com证书的私钥的例子中,PayPal基本上没有任何手段阻止我使用他们的证书。为了保护自己和客户,他们唯一能够采取的真正的防御措施是,获取有效期较短的证书。

想象一下有效期分别为3年和3个月的证书之间的区别。假如,在你获得了崭新的证书之后1个月,我设法攻击并窃取了你的私钥。如果你的证书有效期是3年,那么我现在有2年11个月的时间来盗用这个证书,并且会带来损害。这样,访问者可以访问paypal.com,并在地址栏看到绿色https标识,这种情况会持续2年11个月,用户甚至可能完全无法和真正的PayPal进行交流,也不会有安全连接。这很不好。现在考虑一下有效期为3个月的证书。如果在你获得它的1个月后,我窃取了你的私钥,那么作为攻击者,在证书过期之前,我只有两个月的时间来盗用它。这会迫使我更快采取行动,我现在拥有的行动时间变短了,总体上看,你的用户面临的风险将会大大降低。

冲刷生态系统

正如你在任何复杂的生态系统中所可能看到的那样,在更广泛的证书生态系统中,情况已经发生了一些变化。新的字段被引入到证书中,旧的字段被弃用,可接受的值也发生了变化,特别是在与加密有关的时候,我们必须不断地适应新的威胁和更为强大的对手。在这方面有一些很好的例子,证书的最长有效期是一个关注点,最近的例子就是SHA-1的弃用。

证书颁发机构过去经常使用SHA-1散列算法来生成证书上的签名。这种签名赋予证书所有的值,浏览器通过签名来验证证书是否来自可信任的证书颁发机构,以及是否被篡改。而问题在于,SHA-1算法越来越老旧,越来越脆弱,而最终,它将会不可避免地被破解。在2014年10月的CAB论坛118号投票中,论坛决定,从2016年1月1日起,不允许任何证书颁发机构颁发由SHA-1和SHA-256算法签名的证书。这很好,我们有了截止日期,但问题在于,在停止接受SHA-1算法签名的证书之前,浏览器不会等待很长时间的。Chrome宣布,从2017年1月1日起,他们将停止接受SHA-1签名的证书,其他浏览器厂商也随之采取了同样的做法。这也是一件好事,因为在那之后的几个月,SHA-1算法就被破解了

这意味着,你可以在2015年12月31日获得一个有效期长达39个月的证书,该证书在2019年3月之前一直有效,而这种情况在2017年1月以后就不会出现了。但是,这39个月的有效期还是太长了,以致于整个行业没有足够的时间来应对新的攻击行为,这意味着网站会一直拥有有效的证书,直到这些证书过期。

SHA-1算法被弃用这样的情况并不是第一次出现,而且肯定也不会是最后一次。我们还看到了其他的一些变化,比如从1024位RSA密钥到2048位RSA密钥的转变,以及最近Chrome浏览器对常用名称字段的弃用,他们要求网站在证书过期之前重新颁发。作为一个更广泛的行业,不断有新的威胁出现,需要我们应对,所以39个月的时间太长了,我们必须能够在更短的时间内将所有现有证书的生态系统冲洗一遍。

密钥更换

证书的过期提供了一个很好的机会来更换与该证书一起使用的密钥。除了过期证书的自然更新之外,如果你想要更换密钥,就必须重新颁发证书,而这是不太不可能的。除了HTTP公钥绑定(我最近已经放弃使用它了,Chrome浏览器也宣布了弃用它)之外,你应该至少每年都要更换一次你的私钥。而当证书最长有效期是39个月或者是825天的时候,大多数密钥更换周期实际上都会达到这一时间上限,而不会比这个时间短。这是一种糟糕的卫生习惯,而且一种密钥的使用时间越长,它就越有可能面临安全风险,只要有可能,我希望看到尽可能短期的密钥,而不希望看到静态的密钥。

证书透明日志不合格

虽然这并不是迫在眉睫的问题,但是,我们看到,Chrome浏览器提出了一项新的要求,即所有证书都需要在证书透明方面合格,因此在接下来的几个月里,它将成为非常值得考虑的事情。证书透明是一个非常棒的新要求,应该会在2018年4月实现,这将要求所有证书颁发机构将它们颁发的所有证书记录到公开日志中,这些日志可以接受审查。这意味着,任何证书颁发机构的业务对我们来说都将有充分的透明度(这些超级强大的机构实际上是网络加密通信的守护者),这样,就没有人能够在你不知情的情况下获得你的域的证书。要通过证书透明系统的检查,一份证书必须包含

来自3个独立日志中的至少3个签名证书时间戳(SCT)。如果一个证书不包含3个有效的SCT,那么它就不会通过证书透明系统的检查,而浏览器则会拒绝它。如果证书日志在证书的有效期内被取消资格,那么从该日志开始,该证书内的SCT将会失效,从而使证书不再满足证书透明系统的要求。

现在,为了应对这一机制,一个证书颁发机构可以通过在证书中放置多个SCT来提供保护,以避免被证书透明系统取消资格,但是问题仍然存在。证书的有效期越长,就越有可能出现日志不合格的情况,那将会使证书无法通过检查,从而被证书透明系统拒绝。较短的证书有效期有助于防止出现这一问题,而且相对于有效期825天的证书,在有效期90天的证书中包含较少的SCT也安全多了,同时证书也会更小。

因为熟能生巧

想象一下,你每5年只做一次任务,你觉得你还会记得那些步骤吗?你在2013年做的事情在你的脑海里会是新鲜的还是模糊的?我最近看到的一件事就是一些大网站提供了过期的证书。

现在我确信,经常会有一些真正的错误和疏忽,但是我听说过很多公司的故事,他们只是忘记了。有人买了一个证书,该证书会在3年多以后失效,这是一个很遥远的日子,然后它就被遗忘了。不仅如此,当需要进行更新时,没有人记得整个操作过程、谁做的、他们是怎么做的或者文档在哪里。让证书更新成为一个常规过程的一部分,它们很快就会成为你所做的那些甚至不需要“思考”的任务之一。但是,你知道还有什么比这更好的吗?那就是自动化。

自动证书更新

关于Let’s Encrypt让我非常喜欢的一件事并不是他们是一家免费的证书颁发机构,而是他们的证书更新过程可以是完全自动的。不要误解我的意思,降低成本对很多人来说是件大事,但我已经很乐意为证书付费了。对我来说,关于Let's Encrypt的好处,更加重要但又较少被谈到的一件事是,你怎样才能获得证书。我(博主)对Let's Encrypt曾经讨论过很多,如我的入门指南、我的非常酷的带表情的子域.scotthelme.co.uk、ECDSA certificates、我的智能更新脚本以及更多

尽管我所做的所有关于Let's Encrypt的事情都很酷,但我要说,其中最好的一件事绝对是,通过使用一个简单的cron 作业,我就可以自动更新我所有的证书,而没有任何事情需要担心。

见鬼,我甚至是在我的Ubiquiti家庭网络设备上操作的!Let's Encrypt只颁发有效期为90天的证书,如果你想要手动更新的话,那将是一个很大的问题。我们想要频繁的更新,但是当你获得更多的证书时,手动的操作就变得更加困难了,这就是自动更新变得必不可少并且我还要继续向那些听我讲话和接受我培训的每一个人推广自动更新的原因。可以消除错过更新的风险,可以消除人为错误的风险,还可以降低获取和更新证书所涉及的成本。为什么不喜欢它呢?我意识到,现在它可能并不是一个对每个人来说都切实可行的选择,但是自动更新的整体概念对几乎所有人来说都是全新的。随着时间的推移,这只会变得越来越好。今后将会有更多的工具、更多的服务和更多的产品在这方面为你提供帮助,所以,也许不是今天或者下周,但这肯定会很快发生的。

当你的证书颁发机构太任性的时候怎么办

诚然,这是一个小得多的问题,但仍有可能发生。现在,我们看到了对Symantec公司作为一个证书颁发机构的更广泛的不信任,而网站不得不在其证书到期之前进行更换。你可以很容易地从Symantec公司得到一份有效期为39个月的证书,但该证书在你购买后不到一年就会停止工作。如果替换证书是你的工作中的一个常规部分,而不是每3年才会去做的一些奇怪的步骤,那么更换证书就会容易得多。

我们正朝着正确的方向前进

我们确实是在朝着正确的方向前进,我很高兴看到我们不仅在加密整个互联网,而且在证书有效期的缩短方面都取得了进展。随着我们在整个互联网上颁发越来越多的证书,网上的问题只会越来越与更多的站点有关。如果你想要开始把HTTPS部署到你的网站上,那么现在就是这么做的最好时机。选择有效期短的证书,尽可能多地考虑自动化过程,这样可以帮你更好地入门。如果你使用https已经有很长时间了,可能你用的是有效期为39个月的证书,也许现在是时候考虑用更新、更快、更简单、更便宜的方式来替换旧的证书更新过程了。我们需要继续让互联网加速向https转变,并继续缩短证书的最长有效期,但这并不意味着你必须获得具有最长有效期的证书,你也可以选择有效期更短的证书。

EV证书

这里的另一个观点是,你可能会遇到EV证书的问题——EV证书真有学术论文说得那么好么?答案是:不。EV证书本质上与上面列出的几乎所有观点相违背。EV证书很难获得,获得它需要有一个漫长的过程,所以人们想要尽量避免这样做。这迫使人们为他们的证书上选择更长的有效期,以避免这种艰难的过程。人们越来越倾向于选择更长有效期的证书,这不是我们希望看到的。不仅如此,证书颁发机构还通过打折促销手段来积极鼓励人们购买更长有效期的证书,所以网站又也有了财务方面的动机去做错误的事情。

EV证书的另一个问题是,它是反自动化的。获得一个EV证书需要人工操作过程,再加上完成这一过程需要数小时甚至数天,这意味着没有办法自动完成。你将不得不继续手动地获取和管理这些证书,这花费太多精力了。如果你需要在被攻击后快速更换你的密钥和证书,这对你也是不利的。总的来说,我们将继续推动密码有效期变得更短,由于很好的理由,短期密钥更受欢迎,而我们越努力地降低证书的预期寿命,情况就会越好。