Dla bezpiecznej aplikacji muszę wybrać certyfikat w oknie dialogowym. Jak uzyskać dostęp do magazynu certyfikatów lub jego części (na przykład storeLocation="Local Machine"
i storeName="My"
) za pomocą C# i pobrać z niego kolekcję wszystkich certyfikatów? Z góry dziękuje za twoją pomoc.Uzyskaj listę certyfikatów ze sklepu certyfikatów w języku C#
Odpowiedz
Tak - właściwość X509Store.Certificates
zwraca migawkę magazynu certyfikatów X.509.
X509Store store = new X509Store("My");
store.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 mCert in store.Certificates){
//TODO's
}
Spróbuj tego:
//using System.Security.Cryptography.X509Certificates;
public static X509Certificate2 selectCert(StoreName store, StoreLocation location, string windowTitle, string windowMsg)
{
X509Certificate2 certSelected = null;
X509Store x509Store = new X509Store(store, location);
x509Store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection col = x509Store.Certificates;
X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(col, windowTitle, windowMsg, X509SelectionFlag.SingleSelection);
if (sel.Count > 0)
{
X509Certificate2Enumerator en = sel.GetEnumerator();
en.MoveNext();
certSelected = en.Current;
}
x509Store.Close();
return certSelected;
}
Linq to ułatwia: x509Store.Certificates.OfType
@ JonathanDeMarks: co dokładnie oznacza "DC = mysite, DC = com" '? Żaden z tych przykładów nie wydaje się pokazywać, jak uzyskać certyfikat _specific_ ... – Nyerguds
@Nyerguds Pytanie brzmi: Pobierz listę certyfikatów z magazynu certyfikatów w C#, a nie konkretne. Proszę, Utwórz kolejne pytanie. – Cobaia
Najprostszym sposobem na to jest poprzez otwarcie magazynu certyfikatów chcesz, a następnie za pomocą X509Certificate2UI
.
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var selectedCertificate = X509Certificate2UI.SelectFromCollection(
store.Certificates,
"Title",
"MSG",
X509SelectionFlag.SingleSelection);
Więcej informacji pod numerem X509Certificate2UI
on MSDN.
Aby użyć 'X509Certificate2UI', muszę dodać odwołanie do' System.security.dll', jednak działa to jak urok +1 ':)'. Również do korzystania z magazynu kluczy użytkownika używam 'StoreLocation.CurrentUser' zamiast 'StoreLocation.LocalMachine'. – albciff
- 1. Sklep certyfikatów Windows
- 2. odnawianie profilu i certyfikatów
- 3. Klucze certyfikatów - konwersja
- 4. Używanie certyfikatu klienta spoza magazynu certyfikatów
- 5. Node.js Wiele certyfikatów SSL
- 6. Generowanie losowych certyfikatów
- 7. Będziesz bez certyfikatów SSL?
- 8. rsacryptoserviceprovider za pomocą certyfikatów x509 C#
- 9. Ręczne sprawdzenie łańcucha certyfikatów X509
- 10. Jak zapewnić łańcuch certyfikatów w usłudze AuthenticateAsServer SSLStream()?
- 11. Lista wszystkich zainstalowanych certyfikatów na Androidzie
- 12. Jak dodać łańcuch certyfikatów do magazynu kluczy?
- 13. Sprawdzanie poprawności certyfikatów klienta w PyOpenSSL
- 14. Wyłączanie sprawdzania certyfikatów ssl w mechanize
- 15. Jak odczytać łańcuch certyfikatów Pkcs # 7 z pliku/strumienia w języku C#?
- 16. Uzyskaj listę wszystkich serwerów druku w domenie w języku C#
- 17. jak dodać temat alernatywny do certyfikatów ssl?
- 18. Ile certyfikatów dystrybucji ad-hoc systemu iOS można utworzyć? Limit dla certyfikatów?
- 19. Uzyskaj wyraźną listę między dwiema listami w języku C#
- 20. Akceptowanie nieprawidłowych certyfikatów SSL za pomocą WinRT
- 21. WSDL Client Auth i wiele certyfikatów
- 22. Instalowanie certyfikatów klienta w aplikacjach XAML aplikacji Sklep Windows
- 23. Wiele certyfikatów/Provisioning Profiles w jednym organizatorze Xcode?
- 24. Uprawnienia ASP.net do głównego magazynu certyfikatów
- 25. Załaduj wiele certyfikatów do PKCS12 z openssl
- 26. Zestaw certyfikatów aplikacji systemu Windows nie działa.
- 27. Opis magazynów kluczy, certyfikatów i aliasów
- 28. Co to są różne typy certyfikatów, formaty w kryptografii
- 29. Uzyskaj obsługiwane znaki czcionki - w języku C#
- 30. Konfiguruj klienta usługi WCF z uwierzytelnianiem certyfikatów programowo
Aby wyeliminować ewentualne błędy literówek, należy użyć wyliczeń: StoreName i StoreLocation. –