Pregunta

Estoy tratando de averiguar si hay alguna forma de que un cliente .NET use un certificado de cliente sin involucrar al almacén de claves de Windows de ninguna manera.

Tengo un fragmento de código como este:

test1.Service s = new test1.Service();
X509Certificate c = X509Certificate.CreateFromCertFile(@"C:\test.pem");
s.ClientCertificates.Add(c);
int result = s.TestMethod();

Sin embargo, esto solo funciona si también tengo el certificado referenciado en " test.pem " instalado en mi tienda de certificados. Supongo que esto se debe a que la clave es necesaria para la negociación. Si no tengo el certificado / clave en la tienda, el certificado no se envía con la solicitud.

Lo que quiero hacer es proporcionar el certificado y la clave privada de un archivo o archivos y no involucrar el almacén de certificados de Windows de ninguna manera.

¿Hay alguna forma de hacer esto?

¿Fue útil?

Solución

Voy a publicar una respuesta a mi propia publicación, pero la dejaré abierta para ver si otros pueden resolverla de manera diferente.

Básicamente, estoy jugando. Si tiene un archivo PKCS12 (con clave y certificado), puede usar la clase X509Certificate2 para cargar ese archivo y usarlo, y no interrogará al almacén de claves.

No pude encontrar una manera de hacer esto con una clave PEM plana y archivos cert (como lo que necesitaría con Python, por ejemplo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top