Bir sertifika ile. Net bir php webservice çağırma

0 Cevap

Ben kullanıcı / şifre ve sertifika tarafından güvenli bir php web hizmetini çağırmak c # bu kodu kullanıyorum:

string wsurl = ConfigurationManager.AppSettings["Url"];
string wsuser = ConfigurationManager.AppSettings["User"];
string wspass = ConfigurationManager.AppSettings["Pass"];

string url = string.Format(wsurl, param1, param2);

System.Net.CredentialCache oCredentialCache = new System.Net.CredentialCache();
oCredentialCache.Add(new System.Uri(url), "Basic",
    new System.Net.NetworkCredential(wsuser, wspass));

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Timeout = TIMEOUT;
req.Credentials = oCredentialCache;
req.Method = "GET";

AttachCert(req);

//Get the data as an HttpWebResponse object
WebResponse resp = req.GetResponse();

Benim devel makineden çalıştırdığınızda bekleniyor ama biz bu sunucuya yüklemek zaman) GetResponse çağrısı (bir zaman aşımı hatası alıyorum gibi çalışır.

The AttachCert() call is where I attach the certificate to the request, and if I comment this line I don't get the timeout but a correct error saying the call could not be completed because of the missing certificate. This is the AttachCert code:

public static void AttachCert(HttpWebRequest Request)
{
    // Obtain the certificate. 
    string certpath = ConfigurationManager.AppSettings["CertPath"];

    X509Certificate Cert = X509Certificate.CreateFromCertFile(certpath);
    ServicePointManager.CertificatePolicy = new CertPolicy();

    Request.ClientCertificates.Add(Cert);
}

Herhangi bir fikir neden bu benim makine üzerinde çalışmak değil, sunucuda ki? Biz webcoder sertifikayı kaldırmak için çalıştı ve beklendiği gibi çalıştı. Yani orada o çağrı garip şey açıkça ama ne bilemiyorum.

Thanks Vicenç

0 Cevap