Für eine sichere Anwendung muss ich ein Zertifikat in einem Dialogfeld auswählen. Wie kann ich mit C# auf den Zertifikatspeicher oder einen Teil davon (z. B. storeLocation="Local Machine"
und storeName="My"
) zugreifen und eine Sammlung aller Zertifikate von dort abrufen? Vielen Dank im Voraus für Ihre Hilfe.Liste der Zertifikate aus dem Zertifikatspeicher in C#
Antwort
Ja - die X509Store.Certificates
-Eigenschaft gibt einen Snapshot des X.509-Zertifikatsspeichers zurück.
X509Store store = new X509Store("My");
store.Open(OpenFlags.ReadOnly);
foreach (X509Certificate2 mCert in store.Certificates){
//TODO's
}
Try this:
//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 macht dies einfacher: x509Store.Certificates.OfType
@ JonathanDeMarks: was genau bedeutet das "" DC = mysite, DC = com "" hier bedeuten? Keines dieser Beispiele scheint zu zeigen, wie man ein _spezifisches_ Zertifikat bekommt ... – Nyerguds
@Nyerguds Die Frage ist: Holen Sie sich die Liste der Zertifikate aus dem Zertifikatsspeicher in C#, nicht spezifisch. Bitte, erstellen Sie eine weitere Frage. – Cobaia
Der einfachste Weg, dies zu tun, ist durch den Zertifikatspeicher Öffnen Sie wollen und dann X509Certificate2UI
verwenden.
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var selectedCertificate = X509Certificate2UI.SelectFromCollection(
store.Certificates,
"Title",
"MSG",
X509SelectionFlag.SingleSelection);
Weitere Informationen in X509Certificate2UI
on MSDN.
Um 'X509Certificate2UI' zu verwenden, muss ich einen Verweis auf' System.security.dll' hinzufügen, dies funktioniert jedoch wie ein Charm +1 ':)'. Um einen Benutzer Keystore zu verwenden, verwende ich 'StoreLocation.CurrentUser' anstelle von' StoreLocation.LocalMachine'. – albciff
- 1. WCF-Zertifikate ohne Zertifikatspeicher
- 2. Wie lese ich Zertifikate aus meinem Zertifikatspeicher?
- 3. Zertifikate - Wann sind sie im Zertifikatspeicher installiert?
- 4. Zertifikate von SmartCard in C#
- 5. Windows-Zertifikatspeicher
- 6. Welche Vorteile bietet der Windows-Zertifikatspeicher?
- 7. Linux-Äquivalent für den Windows-Zertifikatspeicher
- 8. Webservice-Sicherheit und Windows-Zertifikate
- 9. C# Liste der Felder aus der Liste der Klasse extrahieren
- 10. C++ Löschen aus der Liste der Paare
- 11. Löschen Sie alle Bereitstellungsprofile und Zertifikate aus dem Entwicklerkonto
- 12. Wo sind SSL-Zertifikate gespeichert?
- 13. C# Regex Worte passen aus der Liste
- 14. Artikel aus der Array-Liste ausschließen C#
- 15. Android, Zugriff System private/öffentliche Zertifikate
- 16. aus dem ersten Liste erstes Element, indem sie, und letztes Element aus dem zweiten Liste
- 17. Liste aus dem Web sortieren
- 18. Möglichkeiten zum Hinzufügen eines Zertifikats zum Zertifikatspeicher aus einem Skript
- 19. Return Model mit dem niedrigsten Wert aus der Liste
- 20. Ausblenden und Verwenden von Dialogfeldern bei Verwendung der Microsoft Crypto-API (Windows-Zertifikatspeicher)
- 21. C# Entfernen einer Liste aus einer Liste
- 22. Wert aus dem Datenattribut der ausgewählten Dropdown-Liste abrufen
- 23. Wie entfernen Sie alle Elemente außer dem ersten Element aus der Dropdown-Liste in C#?
- 24. Entfernen Zeichenfolge aus der Liste aus, wenn Liste String
- 25. aus der Liste der Wörterbuch in Python
- 26. Join auf Liste der Liste in C#
- 27. Aus der Liste der Liste lesen
- 28. generieren Baum aus Python Liste der Liste
- 29. Müssen ungültige E-Mails aus der Mailing-Liste in C#
- 30. Wie entferne ich das Element aus der Liste in C#?
Um Tippfehler auszuschließen, sollten Sie die Enumerationen StoreName und StoreLocation verwenden. –