Pergunta

Eu tenho sido emitido um certificado PKCS # 12 para ser usado para acessar um simples serviço web baseado em XML. Quando eu carregar os arquivo PKCS # 12 no Windows (Vista), eu posso acessar o serviço usando o meu navegador.

Tentando acessar o serviço através de uma aplicação, sem carregar os PKCS # 12 nas coleções OS Certificado, eu escrevi o seguinte 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);

}

Infelizmente este código falha e eu recebo um System.Net.WebException: A solicitação foi anulada: Não foi possível criar SSL / TLS canal seguro. Tenho notado que quando eu faço carregar os arquivo PKCS # 12 no Windows, o código de repente funciona.

O que eu preciso fazer para fazer fazer com o arquivo sozinho e evitar o uso do armazenamento de certificados do Windows?

Obrigado, Boaz

Mais informações: Apenas aplicada SP1 ao meu Visual Studio e agora eu recebo uma exceção diferente: "Uma chamada para SSPI falhou, ver exceção Inner" com a uma exceção interna -> "A mensagem recebida foi inesperada ou mal formatado."

Foi útil?

Solução

Você tem que ter o seu certificado instalado no Certificate Store. A maneira mais fácil é usar o IE e importar o certificado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top