我写的应用程序在向服务器“创建SSL / TLS频道”时遇到问题,但同一台机器上的浏览器对网站没有任何问题。
为了解决这个问题,我创建了以下“dumbed down”代码来测试这个非常具体的问题。
try {
var myRequest = (HttpWebRequest)WebRequest.Create(url);
var response = (HttpWebResponse)myRequest.GetResponse();
if (response.StatusCode == HttpStatusCode.OK) {
Console.Write(string.Format("{0} Available", url));
} else {
Console.Write(string.Format("{0} Returned, but with status: {1}", url, response.StatusDescription));
}
} catch (Exception ex) {
Console.Write(string.Format("{0} unavailable: {1}", url, ex.Message));
}
这仍然给我一个“无法创建SSL / TLS频道”的例外情况。对这两种情况的wirehark分析表明,浏览器Client Hello数据包包含20个密码套件,而应用程序的Client Hello只有4个。我认为这可能是问题,但我不确定它是如何发生的或如何停止它发生了。
为了让它更加混乱,这段代码在另一台机器上运行得很好。