2009-06-30 5 views
1

J'ai reçu un certificat PKCS # 12 à utiliser pour accéder à un simple service Web basé sur xml. Lorsque je charge le fichier PKCS # 12 dans Windows (Vista), je peux accéder au service en utilisant mon navigateur.Comment utiliser un fichier de certificat PKCS # 12 dans un .NET WebRequest?

Essayer d'accéder au service via une application, sans charger les PKCS # 12 dans les collections OS certificats, j'ai écrit le code suivant:

// 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); 

} 

Malheureusement, ce code échoue et je reçois un System.Net .WebException: La demande a été abandonnée: Impossible de créer un canal sécurisé SSL/TLS. J'ai remarqué que lorsque je charge le fichier PKCS # 12 dans Windows, le code fonctionne soudainement.

Que dois-je faire pour faire avec le fichier seul et éviter d'utiliser le magasin de certificats Windows?

Merci, Boaz

Plus d'infos: Juste appliqué SP1 à mon Visual Studio et maintenant je reçois une autre exception: "Un appel à SSPI a échoué, voir exception intérieure" avec l'une exception intérieure -> « La message reçu était inattendu ou mal formaté. "

Répondre

2

Vous devez installer votre certificat dans le magasin de certificats. Le plus simple est d'utiliser IE et d'importer le certificat.

Questions connexes