Bonjour, je cherche à établir une connexion en SSL vers un serveur distant avec une authentification client par certificat (comme le fonctionnement pour les impôts avec le navigateur).

Les bonnes nouvelles sont que nous y arrivons avec le navigateur (certificat client dans le magasin personnel) et avec un projet VS en mode console.
La mauvaise nouvelle c'est que cette méthode ne fonctionne pas dans un projet ASP.NET.

La modification des identités de ASP.NET (impersonation des process) ne sembla pas résoudre le problème.

Y'a-t-il un élément complémentaire à prendre en compte dans un contexte IIS ?

Voici le code utilisé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
X509Certificate Cert = new X509Certificate("C:\\MonDossier\\MonSousDossier\\MonCertificat.pem", "MaClefPrivee");
 
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://service.serveurdistant.com/projet/application/service/create.php");
 
Request.ClientCertificates.Add(Cert);
 
Request.Method = "POST";
Request.KeepAlive = true;
Request.AllowAutoRedirect = true;
Request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequired;
 
ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate certificate, X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
 
return true;
 
};
 
string __urlProxy = "http://192.168.15.98:9090";
string __proxyLogin = "monLoginProxy";
string __proxyPwd = "monMotDePasseProxy";
 
WebRequest.DefaultWebProxy = new WebProxy(__urlProxy, false, null, new NetworkCredential(__proxyLogin, __proxyPwd));
 
HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
 
StreamReader __streamReader = new StreamReader(Response.GetResponseStream(), Encoding.Default);
 
__result = __streamReader.ReadToEnd();
 
__streamReader.Close();