J'essaie de transmettre un certificat client à un serveur en utilisant le code ci-dessous mais je relance toujours l'erreur HTTP 403.7 - Forbidden: un certificat client SSL est requis. Quelles sont les raisons possibles pour lesquelles HttpWebRequest n'enverrait pas le certificat client?Envoi d'un certificat client dans HttpWebRequest
var clientCertificate = new X509Certificate2(@"C:\Development\TestClient.pfx", "bob");
HttpWebRequest tRequest = (HttpWebRequest)WebRequest.Create("https://ofxtest.com/ofxr.dll");
tRequest.ClientCertificates.Add(clientCertificate);
tRequest.PreAuthenticate = true;
tRequest.KeepAlive = true;
tRequest.Credentials = CredentialCache.DefaultCredentials;
tRequest.Method = "POST";
var encoder = new ASCIIEncoding();
var requestData = encoder.GetBytes("<OFX></OFX>");
tRequest.GetRequestStream().Write(requestData, 0, requestData.Length);
tRequest.GetRequestStream().Close();
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CertPolicy.ValidateServerCertificate);
WriteResponse(tRequest.GetResponse());
J'ai utilisé le fiddler et je ne vois aucune indication du CERT client sur la demande de connexion initiale. J'ai ce cert travaillant dans une application de test de mfc donc il semble que quelque chose avec .net n'aime pas quelque chose. –
Vous pouvez utiliser SoapUI pour faire une demande d'exemple, et y attacher le fichier .pfx (voir Préférences | SSL, et vous pouvez y attacher un fichier .pfx). Examinez cette requête à travers Fiddler, et vous verrez à quoi devrait ressembler un bon. –