Pregunta

Me han emitido un certificado PKCS # 12 que se utilizará para acceder a un servicio web simple basado en XML. Cuando cargo el archivo PKCS # 12 en Windows (Vista), puedo acceder al servicio a través de mi navegador.

El intentar acceder al servicio a través de una aplicación, sin cargar los PKCS # 12 en las colecciones de certificados OS, he escrito el siguiente código:

// The certificate i'm using can not be authenticated as it is a development one. 
// For now, just ignore it.
static bool myRemoteCertificateValidationCallback(
         Object sender,
         X509Certificate certificate,
         X509Chain chain,
         SslPolicyErrors sslPolicyErrors
)
{ return true; }

static void Main(string[] args)
{
    ServicePointManager.ServerCertificateValidationCallback = myRemoteCertificateValidationCallback;
    X509Certificate Cert = new X509Certificate(@"certificatefile.p12","medialab");
    HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("https://ServiceURL");
    Req.ClientCertificates.Add(Cert);

    Stream S = Req.GetResponse().GetResponseStream();
    TextReader TR = new StreamReader(S);
    string Ret = TR.ReadToEnd();
    Console.Write(Ret);

}

Lamentablemente este código falla y me siento un System.NET.WebException: Se anuló la solicitud: No se pudo crear un canal seguro SSL / TLS. Me he dado cuenta que cuando lo haga cargar el archivo PKCS # 12 en Windows, el código funciona de repente.

¿Qué necesito hacer para que hacer con el archivo solo y evitar el uso del almacén de certificados de Windows?

Gracias, Boaz

Más información: acaba de aplicar SP1 a mi Visual Studio y ahora recibo una excepción diferente: "Una llamada a SSPI falló, vea Excepción interna" con el una excepción interna -> "El mensaje recibido fue inesperado o con formato incorrecto."

¿Fue útil?

Solución

Se tiene que tener su certificado instalado en el almacén de certificados. La forma más sencilla es utilizar IE e importar el certificado.

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