2015-11-03 5 views
0

Недавно я столкнулся с проблемой и надеялся, что кто-то сможет дать некоторое представление. Срок действия сертификата истекал, и мы заменили его. Был период, когда и старый, и новый сертификат были действительными. Когда старый срок действия сертификата истек, следующий код все еще возвращается как новый и просроченный сертификат:Как X509Certificate2Collection.Find определяет действительный сертификат

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

По каким критериям .Net считают сертификат действителен. Does .Net считают сертификат действительным до полуночи UTC (например, он должен) или в полночное местное время.

В конце концов, мы просто удалили старый сертификат, и все было в порядке; но я не хочу такой же проблемы в следующий раз, когда нам нужно заменить сертификат.

ответ

0

Во-первых, метод X509Certificate2Collection.Find(X509FindType.FindBySubjectName, certName, true) выполняет метод X509Certificate2.Verify() для каждого объекта в коллекции, чтобы определить, действительно ли сертификат. Verify() метод выполняет множество проверок (в соответствии с RFC 5280).

относительно действительности. Срок действия сертификата (внутри) хранится в формате UTC, а .NET преобразует это время UTC в локальное время. Когда вы открываете сертификат и видите, что он действителен до полуночи, сертификат действителен до полуночи в вашем текущем часовом поясе (без полуночи UTC).