[How To] Obtener los certificados Digitales instalados.

Introducción

En este pequeño post vamos a ver como obtener los certificados digitales instalados en un ordenador desde C#.

¿Qué necesitas?

Para el ejemplo que voy a explicar he utilizado Visual Studio 2010, pero es completamente válido desde la versión 2005.

Para la clase que voy a crear he agregado la referencia al namespace System.Security.Cryptography.X509Certificates.

Obtener los certificados

Voy a definir una nueva clase que va a contener dos funciones:

– Obtención de los certificados

– Definición del almacén.

   1: public class CertificateInfo

   2:     {

   3:         public static List<X509Certificate2> GetCertificatesList(X509Store store)

   4:         {

   5:             List<X509Certificate2> certificates = new List<X509Certificate2>();

   6:             if (store == null)

   7:                 return null;

   8:             store.Open(OpenFlags.ReadOnly);

   9:             certificates.AddRange(store.Certificates.Cast<X509Certificate2>().ToList());

  10:             store.Close();

  11:  

  12:             return certificates;

  13:         }

  14:         public static X509Store CreateX509Store()

  15:         {

  16:             return new X509Store();

  17:         }

  18:     }

La función GetCertificatesList va a recibir un objeto de tipo X509Store que va a representar el almacén de los certificados que queremos obtener, y va a devolver una lista de objetos de tipo X509Certificate2 que van a representar toda la información relativa al certificado digital.

La función CreateX509Store nos va definir un nuevo objeto de tipo X509Store con la definición que nostros queramos aportarle.(Ver los distintos constructores existentes)

¿Cómo utilizar este código?

   1: var store = CertificateInfo.CreateX509Store();

   2: var certificates = CertificateInfo.GetCertificatesList(store);

Bueno espero que os sea de utilidad.

Un saludo!

Un comentario en “[How To] Obtener los certificados Digitales instalados.”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *