TLS证书至少有两个时间内容

2021-06-08 12:14:39

TLS证书着名有一个有效期,表达为' andbefore'和#39;不是之后'时代。这些时间可以具有广泛的范围,并且有一些TLS证书颁发机构根证明具有'不是之后'未来相对较远的时间(在这里暗示)。所有TLS证书(包括CA根证书)都在ASN.1中编码。最近,我既是生成的终身证书和凝视着他们在分析中盯着他们,以弄清楚为什么我的新证书Weren' t工作,而且我发现了Asn.1至少有时间的逆时针和什么表示TLS证书取决于特定时间。

大多数TLS证书您今天将遇到编码时间' opensslasn1parse'打电话给一个utctime。如果您在未来的时间具有足够远的ATLS证书,则它将表示为OpenSSL调用概括的时间。有些对mysurprise,这两种都在封面下串起,并且TLS从一个到另一个的原因是它的原因。我' ll首先显示一个不是在我生成的证书的日期(和时间)之后的Not Beforeand A的编码:

此证书有效期为2021-05-31 19:40 UTC至2061-05-2119:40 UTC。 Z表示这是在UTC,' 194026'是19:40:26,' 0531'和#39; 0521'是月份和日子。两次格式的差异在前面; utctime从' 21&#39开始;而另一个开始与#39; 2061'

当我开始研究这个细节时,我假设其中一个或其他形式之间的神奇是因为2038个问题。这是这种情况,因为utctime没有表示为任何类型的Unixepoch时间戳,并且没有这样的限制。相反,utctime'■仅使用两位数的年份。如RFC 5280所涵盖的,如果两个vAsigits是00到49,那么年份为20岁,并且50到99,它是19岁。这意味着utctime只能代表2049年的终点。我生成的证书是有效的过去,因此它消防更多的普通版本。

理论上,处理TLS证书的所有代码都应与两种形式的时间交易。这是一个低级担心,ASN.1解析库通常应该从计划中隐藏,因此自1999年的RFC 2459自RFC 2459自1999年以来一直有效。我怀疑今天几乎没有使用第二次TimeFormat,所以我怀疑那里的至少一些软件,可以解释它们。对于一般使用,我们在这开始成为一个问题之前,我们已经走了(从CA Rocifificates开始将其到期日为2050及以后)。

为了我们自己的用途,我认为我'日后将证书有效限制在2049年。潮流性的方法是假设在某个地方的' Sa Unix时间戳以达到加工的东西和粘附在不时的时间; T Gobeyond 201038北部。

(我认为这些是唯一的两个ASN.1时间代表在互联网上的TLS证书中被认为是有效的,但是仔细完成了RFC和其他信息来肯定。所以我' m是谨慎,并表示TLOFERICES有'至少'两个时间的表示。)