Mam dany certyfikat zainstalowany na moim serwerze. Certyfikat ma ważne daty i wydaje się być całkowicie poprawny w snap-in MMC certyfikatów systemu Windows.Dlaczego ten certyfikat X.509 jest uznany za nieważny?
Jednak, gdy próbuję odczytać certyfikat, aby go użyć w HttpRequest, nie mogę go znaleźć. Oto używany kod:
X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col =
store.Certificates.Find(X509FindType.FindBySerialNumber, "xxx", true);
xxx
to numer seryjny; Argument true
oznacza "tylko ważne certyfikaty". Zwrócona kolekcja jest pusta.
Dziwne jest to, że jeśli przekażę false
, akceptując nieprawidłowe certyfikaty, kolekcja zawiera jeden element o numerze — z określonym numerem seryjnym.
Podsumowując: certyfikat wydaje się ważny, ale metoda Find
traktuje go jako nieważny! Czemu?
Certyfikaty łańcucha są obecne, ale w jakiś sposób nie były dostępne dla tego użytkownika. Użyłem tego przykładowego kodu z MSDN, aby sprawdzić status łańcucha: http://tinyurl.com/4wfnng. Ten kod retruns inny status w zależności od użytkownika. Spróbuję ponownie zainstalować certyfikaty. Dzięki. – pvieira