ASP.NET obtener el certificado digital desde navegador del cliente

publicado por: Anonymous

Estoy realizando un enlace con la AEAT para el tema del SII.
Tengo un problema con la lectura del certificado. Me he encontrado que si tengo el certificado instalado en el nevagador, en producción, funciona correctamente, pero al publicar el proyecto no encuentra el certificado. ¿Alguien me podría ayudar para saber como obtener el certificado desde el navegador del cliente?

Os dejo el código que estoy utilizando actualmente.

Muchas gracias por adelantado.
Un saludo.

    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
    X509Store store = new X509Store(StoreName.My, toreLocation.CurrentUser);
    store.Open(OpenFlags.ReadOnly);
    X509Certificate2Collection certificates = store.Certificates.Find(X509FindType.FindBySerialNumber, NS_CERTIFICADO, true);
    if (certificates.Count == 0) throw new Exception(string.Format("NOT FOUND: {0}", NS_CERTIFICADO));
    X509Certificate2 certificate = certificates[0];
    webRequest.ClientCertificates.Add(certificate);
    webRequest.Headers.Add("SOAPAction", "");
    webRequest.ContentType = "text/xml;charset="utf-8"";
    webRequest.Accept = "text/xml";
    webRequest.Method = "POST";
    return webRequest;

solución

Os dejo como he conseguido solucionarlo por si a alguien le sirve.

string certificadoURL = @"c:certificadoscertificado.pfx";
string certificadoPASS = "password";
X509Certificate2 certificado = new X509Certificate2(certificadoURL, certificadoPASS, X509KeyStorageFlags.Exportable);

webRequest.ClientCertificates.Add(certificado);
webRequest.Headers.Add("SOAPAction", "");
webRequest.ContentType = "text/xml;charset="utf-8"";
webRequest.Accept = "text/xml";
webRequest.Method = "POST";
return webRequest;
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *