这与客户方有关。
我目前正在从事研究工作。我需要连接到服务器(https),但不知怎的,我无法连接到它。 (它是一个Apache服务器)
如果我尝试这样连接:
//Load Certificate
X509Certificate cert = X509Certificate.CreateFromCertFile(@"some.cer");
//Set Callback
ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificate;
//Create Request + assign Cert, Cert is not null
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://myserver.com");
if (cert != null)
req.ClientCertificates.Add(cert);
//Process Request
try
{
req.Timeout = 10000;
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
StreamReader sr = new StreamReader(stream, Encoding.UTF8);
Console.WriteLine(sr.ReadToEnd());
}
catch (WebException ex)
{
Console.WriteLine(ex.Message);
}
由于Timeout,我最终会抛出一个异常。如您所见,我在这里加载自定义证书。我不是百分百肯定如果它是正确的但似乎是对的。
所以问题是它甚至无法建立连接。只有超时,永远不会调用指定的回调。
我不确定自己做错了什么。我90%肯定证书是对的。是否有其他方法可以阻止不需要的客户端,还是我会错过什么?