2015-11-03 55 views
0

我最近遇到了一個問題,並希望有人能提供一些見解。證書即將過期,因此我們將其替換。有一段時間,新舊證書都有效。當舊的證書過期,下面的代碼仍然返回兩個新的和過期的證書:X509Certificate2Collection.Find如何定義一個有效的證書

X509Certificate2Collection.Find(X509FindType.FindBySubjectName, certName, true) 

通過什麼標準的.Net考慮證書的有效期。 .Net會考慮有效的證書,直到UTC的午夜(如應該)或當地時間的午夜。

最後,我們只是刪除舊的證書,一切都很好;但我不想在下次需要替換證書時出現同樣的問題。

回答

0

首先,X509Certificate2Collection.Find(X509FindType.FindBySubjectName, certName, true)方法對集合中的每個對象執行X509Certificate2.Verify()方法以確定證書是否有效。方法執行了很多檢查(符合RFC 5280)。

關於有效性。證書(內部)中的有效性以UTC格式存儲,.NET將此UTC時間轉換爲本地時間。當您打開證書並且在午夜之前發現證書有效時,證書的有效期至您當前時區(不是UTC午夜)的午夜。