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é. "