Per un'applicazione protetta, è necessario selezionare un certificato in una finestra di dialogo. Come posso accedere all'archivio certificati o parte di esso (ad esempio storeLocation="Local Machine"
e storeName="My"
) utilizzando C# e ottenere una raccolta di tutti i certificati da lì? Grazie in anticipo per il vostro aiuto.Ottieni l'elenco dei certificati dall'archivio certificati in C#
risposta
Sì: la proprietà X509Store.Certificates
restituisce un'istantanea dell'archivio certificati X.509.
X509Store store = new X509Store("My");
store.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 mCert in store.Certificates){
//TODO's
}
Prova questo:
//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 semplifica la procedura: x509Store.Certificates.OfType
@JonathanDeMarks: cosa significa esattamente "" DC = mysite, DC = com "' significa qui? Nessuno di questi esempi sembra mostrare come ottenere un certificato _specific_ ... – Nyerguds
@Nyerguds La domanda è: ottenere l'elenco dei certificati dall'archivio certificati in C#, non specifico. Per favore, crea un'altra domanda. – Cobaia
Il modo più semplice per farlo è con l'apertura dei certificati che si desidera e quindi utilizzando X509Certificate2UI
.
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var selectedCertificate = X509Certificate2UI.SelectFromCollection(
store.Certificates,
"Title",
"MSG",
X509SelectionFlag.SingleSelection);
Ulteriori informazioni in X509Certificate2UI
on MSDN.
Per usare 'X509Certificate2UI' ho bisogno di aggiungere un riferimento a' System.security.dll', tuttavia funziona come un fascino +1 ':)'. Inoltre, per utilizzare un keystore utente, utilizzo 'StoreLocation.CurrentUser' anziché'StoreLocation.LocalMachine'. – albciff
- 1. Ottieni l'elenco dei nomi dei negozi di certificati in C#
- 2. Certificati da SmartCard in C#
- 3. Convalida dei certificati client in PyOpenSSL
- 4. rsacryptoserviceprovider utilizzando certificati x509 C#
- 5. Gradle l'autenticazione dei certificati per l'uso repository
- 6. SAVON supporta l'autenticazione dei certificati lato client
- 7. Archivio certificati Windows
- 8. Più certificati con HttpClient
- 9. Certificati client concatenati
- 10. Accettazione di certificati in Java
- 11. X509Certificazione/decifratura di certificati
- 12. Genera certificati casuali
- 13. Chiavi certificati - conversione
- 14. SSL/TLS senza certificati
- 15. CNAME Certificati SSL
- 16. Senza i certificati SSL?
- 17. Node.js Più certificati SSL
- 18. Certificati client HTTPS con Monotouch
- 19. Importazione dei certificati di prova Thawte in un keystore Java
- 20. applicazione segno con diversi certificati
- 21. TestFlight e certificati di Apple
- 22. Catena di certificati di build in BouncyCastle in C#
- 23. Dove sono memorizzati i "certificati" in Firefox?
- 24. Autenticazione client tramite certificati X509 in asp.net
- 25. Consenti certificati ssl non verificati in WKWebView
- 26. Certificati SSL e Boost asio
- 27. Certificati WCF senza certificato Memorizza
- 28. openshift e crittografiamo i certificati
- 29. Ottenere la catena di certificati
- 30. Come funzionano i certificati client?
Per eliminare la possibilità di errori di battitura dovresti usare le enumerazioni: StoreName e StoreLocation. –