Ich habe ein Problem, wenn ich die Methode verwende X509Store.Certificates.Find
public static X509Certificate2 FromStore(StoreName storeName,
StoreLocation storeLocation, X509FindType findType, string findValue)
{
X509Store store = new X509Store(storeName, storeLocation);
store.Open(OpenFlags.ReadOnly);
try
{
//findValue = "7a6fa503ab57b81d6318a51ca265e739a51ce660"
var results = store.Certificates.Find(findType, findValue, true);
return results[0];
}
finally
{
store.Close();
}
}
In diesem Fall gibt die Find-Methode 0 results ( results.Count == 0
) zurück, aber wenn ich den findValue als konstant setze, findet die Methode das Zertifikat.
public static X509Certificate2 FromStore(StoreName storeName,
StoreLocation storeLocation, X509FindType findType, string findValue)
{
X509Store store = new X509Store(storeName, storeLocation);
store.Open(OpenFlags.ReadOnly);
try
{
//findValue= "7a6fa503ab57b81d6318a51ca265e739a51ce660"
var results = store.Certificates.Find(findType,
"7a6fa503ab57b81d6318a51ca265e739a51ce660", true);
return results[0];
}
finally
{
store.Close();
}
}
quelle
Ich habe einige der Antworten hier genommen und sie zu einer statischen Methode kombiniert, bei der Sonderzeichen und Großbuchstaben entfernt werden. Hoffentlich kann es jemand anderes benutzen.
quelle
Ich hatte das gleiche Problem und löste es:
Ich habe den Fingerabdruck von mmc direkt nach VS kopiert. Ich habe die Saiten verglichen und keinen Unterschied festgestellt.
Bei der Überprüfung der Länge mit Hash-Länge ergab sich ein Unterschied zwischen 41 und 40.
Der Zeichenfolge wird ein unsichtbares Zeichen hinzugefügt, indem Sie es aus mmc kopieren.
Lösen:
Es funktioniert.
quelle
Das hat mich auch gestolpert. Ich habe diese Funktion geschrieben, um den Fingerabdruck beim Kopieren und Einfügen aus MMC zu bereinigen:
quelle
Ich bin diesem zum Opfer gefallen. In der Windows-Konsolen-Snap-In-Anzeige des Fingerabdrucks befand sich nicht nur ein Unicode-Zeichen "von links nach rechts", sondern auch Hex-Zeichen in Kleinbuchstaben mit Leerzeichen zwischen jeweils zwei Zeichen. Die Ausgabe von CertUtil hatte auch Kleinbuchstaben und Leerzeichen. Um eine Übereinstimmung zu erhalten, musste ich findValue als Zeichenfolge angeben, in die transformiert wurde
quelle
Dieser Code sollte funktionieren.
Ich nehme an, Sie haben diesen Fingerabdruck von der Zertifikatsverwaltungskonsole kopiert. Und dieser kopierte Wert enthält ein nicht lesbares Unicode-Symbol, das in Visual Studio nicht sichtbar ist. Versuchen Sie, das erste unsichtbare Symbol zu löschen, und wenn ich daran denke, sollte dies funktionieren.
quelle
Ich bin auf dasselbe gestoßen. Ich konnte diese Antwort hier nirgendwo finden, also werde ich sie posten. Es scheint für mich, dass die X509Store-Suchfunktion einfach nicht funktioniert hat. Ich habe dies durch eine einfache for-Schleife überprüft und das Zertifikat manuell abgerufen.
quelle
Ersetzen Sie den Code, um Ihr Zertifikat im Geschäft wie folgt zu finden:
Auch der 3. Parameter, der bool ist, gibt Zertifikate nur zurück, wenn das Zertifikat gültig ist. Stellen Sie also sicher, dass Ihr Zertifikat gültig ist. Wenn Sie ein selbstsigniertes Zertifikat haben, übergeben Sie einfach den 3. Parameter als "falsch".
quelle
Hier ist die einfache Version des Codes für die obigen Vorschläge - natürlich, die für mich funktioniert
quelle
Ich stoße auch auf dieses unsichtbare Unicode-Zeichen. Der Versuch, Notepad (Windows 10) zu verwenden, funktionierte auch für mich nicht gut. Schließlich verwende ich PowerShell, um den sauberen Fingerabdruck zu erhalten:
Soviel zu Unicode char.
quelle
Ich denke du meinst den 2. Parameter "findValue".
quelle
Um Sie wissen zu lassen, was das unsichtbare Zeichen ist, sehe ich den Fingerabdruck im mmc wie folgt: 75 3a ...
Dann kopiere ich es und füge es in mein vim ein. Ich sehe Folgendes:
<200e> 75 3a ...
Nachdem Sie das erste Zeichen "<200e>" und die zusätzlichen Leerzeichen entfernt haben, ist alles in Ordnung.
quelle
+1 für die Antwort von Aasmund Eldhuset (und andere Antworten).
Es kann schwierig sein, zu überprüfen, ob es vorhanden ist. Wenn Sie beispielsweise den Fingerabdruck aus meiner Konfigurationsdatei in den VS-Binäreditor kopieren, wird manchmal das unsichtbare Zeichen angezeigt, manchmal nicht.
Auch dieser Code zeigte kein Problem. Ich ging den Code durch und fuhr mit der Maus über den x509Store, um das gewünschte Zertifikat zu finden.
quelle
Nach langer Analyse hat Folgendes für mich funktioniert.
Das funktioniert wie ein Zauber.
quelle