关于证书的生命周期
在互联网加密的早期,你可以获得任意有效期的证书。那些日子已经一去不复返了,随着时间的流逝,我们才意识到我们需要做更多的工作来大大降低证书的最长有效期,这样做有很多不同的原因。下面就让我们来看看这些原因具体是什么。
证书有效期的历史
最初,证书颁发机构在它所颁发的证书的有效期上是不受任何限制的。在2000年代的时候,GoDaddy会很愉快地颁发给你一份有效期为10年的证书!想象一下,不需要更新,不需要处理,也不需要艰苦地工作。你只需要安装好这份证书,然后在将近十年的时间内,你都可以忘掉它了!虽然看起来这似乎是个不错的主意,但实际上情况并不是这样,其中有很多原因,我将会深入讨论,但首先,我想让大家了解一下我们目前在证书有效期方面的基本立场。“CAB论坛”,它是对证书颁发机构如何按照“基准需求”(BR)中的规则颁发和管理公开可信证书的行为进行管理的机构。自从第一个版本的BR发布以来,已经有3年时间了,5年的最长证书有效期已经被降至3年多一点。2015年4月1日以来,我们的证书的最长有效期一直是39个月,而在最近,我们正努力将证书的最长有效期进一步缩短。
为什么我们需要更短的证书有效期
乍一看,似乎更短的证书有效期会带来痛苦,人们不得不更加频繁地更新它们,但实际上,缩短证书的寿命会在安全方面给你带来很大的好处。
证书撤销机制已被破解
你可以通过证书撤销来阻止攻击者在窃取你的私钥之后使用你的证书。如果我能够窃取域名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年多以后失效,这是一个很遥远的日子,然后它就被遗忘了。不仅如此,当需要进行更新时,没有人记得整个操作过程、谁做的、他们是怎么做的或者文档在哪里。
标签:HTTPS加密 | SSL 证书 | 代码签名 | EV 代码签名证书 | GeoTrust 数字证书 | Thawte 数字证书 | Symantec 数字证书 | GlobalSign 数字证书
上一篇:SSL证书有效期
下一篇:庆祝OpenSSL诞生20周年