c# - los - certificados equipo local



Cómo encontrar el certificado por su huella digital en C# (4)

Estoy usando este código para encontrar el certificado por su huella digital. existe certificado en el administrador de certificados en el almacén de certificados personales, pero este código no encuentra ese certificado.

Por favor, dime dónde estoy haciendo mal en eso.

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();
}

https://src-bin.com


Answer #1

Acabo de tropezar con esta pregunta cuando busqué en Google el mismo problema, y ​​encontré la respuesta here : si, como yo, obtuviste tu huella digital de "origen" de MMC al resaltar la huella digital y copiarla en el portapapeles, casi con seguridad has atrapado un personaje invisible al comienzo de la pantalla, entonces:

cadena certThumbPrint = "fe14593dd66b2406c5269d742d04b6e1ab03adb1";

es en realidad

cadena certThumbPrint = " INVISIBLECHARACTER fe14593dd66b2406c5269d742d04b6e1ab03adb1";

Si elimina este carácter invisible (puede ver que está allí cuando presiona la tecla de retroceso o elimina junto a él y no parece que ocurra nada), o simplemente vuelve a escribir la huella digital a mano, su código debería funcionar bien. Ahora si solo Visual Studio tuviera una opción de "mostrar caracteres invisibles" ...


Answer #2

Ejecuto este script de PowerShell para obtener todas las huellas dactilares y redirigir el resultado a un archivo de texto y copiar la huella digital desde allí.

Get-ChildItem -path cert:\LocalMachine\My

Para redirigir a la salida a un archivo de texto, use esto:

Get-ChildItem -path cert:\LocalMachine\My > thumbprints.txt

Answer #3

Mis dos centavos: copié el valor en MMC y lo pegué en VS con espacios en blanco habilitados.

No había nada al principio, sino un espacio al final: "1e 52 73 0d 00 29 e6 85 7b e6 23 e2 fa c7 a5 08 ac 36 5e 57"

Ahora, en el archivo web.config pegué el valor manteniendo todos los espacios dentro, eliminando el espacio final: "1e 52 73 0d 00 29 e6 85 7b e6 23 e2 fa c7 a5 08 ac 36 5e 57"

Esto funciona bien

Si utilizo "1e52730d0029e6857be623e2fac7a508ac365e57", eliminar el espacio dentro como lo veo en otras publicaciones, no funciona ...

Espero que esto pueda ayudar;)


Answer #4

Pude resolver el problema escribiendo una aplicación de consola que recupera todos los certificados en el certificado y muestra el ID de huella digital. Copié la salida de la consola e inserté la huella digital exactamente. Sin problemas. Parece que copiar desde la consola de MMC causa problemas a pesar de que los datos son similares. Utilicé este sitio como punto de partida para leer todos los certificados.

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





x509certificate