Bonjour,
En fait je ne peux configurer le service auquel j'accède on m'a simplement remis un certificat et un login/password.
En fait par rapport à mon dernier message, dans mon code j'ai une ligne
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
Qui semble être une simple rustine pour passer outre les erreurs de validation mais ce n'est pas ce que je veux.
Donc pour commencer j'ai surtout un grand flou sur l'utilisation d'un certificat publique.
Lorsque en utilisant l'outil mmc.exe, pour que ma requête sur mon service passe (sans déclarer de certificat dans le code) je dois installer celui-ci au niveau des "Autorités de certificats racine de confiance" sur ma machine locale.
J'essaye après coup de le faire via le code:
1-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
X509Certificate cert = X509Certificate.CreateFromCertFile(Configuration.GetConfigurationVariable("esb.certificate"));
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create("https://");
WebReq.ClientCertificates.Add(cert);
WebReq.Timeout = 300000;
//Set the method/action type
WebReq.Method = "POST";
//We use form contentType
WebReq.ContentType = "soap/xml; charset=utf-8";
//The length of the buffer
WebReq.ContentLength = buffer.Length;
//We open a stream for writing the post data
Stream MyPostData = WebReq.GetRequestStream(); |
J'obtient lune erreur de validation:
The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
Du coup en cherchant un peu j'essaye de stocker mon certificat au bon endroit:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
X509Certificate2 cert = new X509Certificate2(Configuration.GetConfigurationVariable("esb.certificate"));
X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create("https://=");
WebReq.Timeout = 300000;
//Set the method/action type
WebReq.Method = "POST";
//We use form contentType
WebReq.ContentType = "soap/xml; charset=utf-8";
//The length of the buffer
WebReq.ContentLength = buffer.Length;
//We open a stream for writing the post data
Stream MyPostData = WebReq.GetRequestStream(); |
Mais j'ai une erreur de droit sur ma machine Locale.
Et si je me contente de StoreLocation.CurrentUser dans le code précédent j'ai de nouveau l'erreur de validation comme si je n'avais pas déclaré de certificat.
Quelqu'un pourrait-il m'aider à comprendre la bonne utilisation de ces certificats? qu'est-ce que j'oubli de faire?
Cordialement.
Partager