我最近遇到了一个问题,希望有人可以提供一些见解。证书即将到期,因此我们将其替换。有一段时间,旧证书和新证书都有效。旧证书过期后,以下代码仍返回新证书和过期证书:
X509Certificate2Collection.Find(X509FindType.FindBySubjectName, certName, true)
根据什么标准.Net认为证书有效。 .Net是否认为证书有效期至午夜UTC(应该如此)或当地时间午夜。
最后,我们只是删除了旧证书,一切都很好;但是下次我们需要更换证书时,我不会想要同样的问题。
答案 0 :(得分:1)
首先,X509Certificate2Collection.Find(X509FindType.FindBySubjectName, certName, true)
方法对集合中的每个对象执行X509Certificate2.Verify()
方法,以确定证书是否有效。 Verify()
方法执行大量检查(根据RFC 5280)。
关于有效性。证书中的有效性(内部)以UTC格式存储,.NET将此UTC时间转换为本地时间。当您打开证书并看到它在午夜之前有效时,证书在当前时区(而不是UTC午夜)的午夜有效。