97 votes

Comment trouver un certificat par son empreinte digitale en C#

J'utilise ce code pour trouver le certificat par son empreinte. Le certificat existe dans le gestionnaire de certificat dans le magasin de certificat personnel mais ce code ne trouve pas ce certificat.

S'il vous plaît, dites-moi ce que je fais de mal.

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string certThumbPrint = "fe14593dd66b2406c5269d742d04b6e1ab03adb1";
            X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
            // Try to open the store.

            certStore.Open(OpenFlags.ReadOnly);
            // Find the certificate that matches the thumbprint.
            X509Certificate2Collection certCollection = certStore.Certificates.Find(
                X509FindType.FindByThumbprint, certThumbPrint, false);
            certStore.Close();

            // Check to see if our certificate was added to the collection. If no, 
            // throw an error, if yes, create a certificate using it.
            if (0 == certCollection.Count)
            {
                Console.WriteLine("Error: No certificate found containing thumbprint " );
            }
            Console.ReadLine();
}

3voto

Darren Sandford Points 11

J'ai fait ce qui suit pour supprimer le caractère supplémentaire, et aussi pour supprimer tout ce qui n'est pas un hexadécimal valide (et le ToUpper) :

            thumbprint = Regex.Replace(thumbprint.ToUpper(), @"[^0-9A-F]+", string.Empty);

Cela m'a permis de copier l'empreinte directement depuis la boîte de dialogue du gestionnaire de certificats et de la coller directement dans mon usage.

0voto

David Valdez Points 1

J'ai pu résoudre le problème en écrivant une application console qui récupère tous les certificats et affiche l'identifiant de l'empreinte. J'ai copié la sortie de la console et inséré l'empreinte exactement. Aucun problème. Il semble que la copie à partir de la console MMC pose des problèmes même si les données sont similaires. J'ai utilisé ce site comme point de départ pour lire tous les certificats.

https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.thumbprint(v=vs.110).aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X