Использование Visual Studio 2005 - С# 2.0, System.Net.WebClient.UploadData(Uri address, byte[] data)
Windows Server 2003
Итак, вот урезанная версия кода:
static string SO_method(String fullRequestString)
{
string theUriStringToUse = @"https://10.10.10.10:443"; // populated with real endpoint IP:port
string proxyAddressAndPort = @"http://10.10.10.10:80/"; // populated with a real proxy IP:port
Byte[] utf8EncodedResponse; // for the return data in utf8
string responseString; // for the return data in utf16
WebClient myWebClient = new WebClient(); // instantiate a web client
WebProxy proxyObject = new WebProxy(proxyAddressAndPort, true);// instantiate & popuylate a web proxy
myWebClient.Proxy = proxyObject; // add the proxy to the client
myWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); // stick some stuff in the header
UTF8Encoding utf8Encoding = new UTF8Encoding(false);// create a utf8 encoding
Byte[] utf8EncodedRequest = HttpUtility.UrlEncodeToBytes(fullRequestString, utf8Encoding); // convert the request data to a utf8 byte array
try
{
utf8EncodedResponse = myWebClient.UploadData(theUriStringToUse, "POST", utf8EncodedRequest); // pass the utf8-encoded byte array
responseString = utf8Encoding.GetString(utf8EncodedResponse); // get a useable string out of the response
}
catch (Exception e)
{
// some other error handling
responseString = "<CommError><![CDATA[" + e.ToString() + "]]></CommError>";// show the basics of the problem
}
return responseString;// return whatever ya got
}
Это ошибка, которую я получаю:
Подключенное соединение было закрыто: не удалось установить доверительные отношения для защищенного канала SSL/TLS.
У меня нет большого контроля над тем, что происходит, когда запрос уходит. Мне сказали, что он достигает правильного адресата и там "ошибка сертификата". Это, предположительно, потому, что существует буквальное несоответствие между IP-адресом в моем запросе и URL-адресом, который он разрешает. У меня есть несколько IP-адресов, которые я должен объединить, чтобы указать URL-адрес, который не будет работать. Я не прикрепляю сертификат - и я не должен соглашаться с владельцами конечных точек. По "им" ошибка сертификата "нормальная", и я должен ее игнорировать.
Соответствующий сертификат, предположительно, является одним из многих сертификатов verisign, которые "находятся там" на нашем сервере. Примеры, которые я видел для игнорирования ошибок сертификата, похоже, подразумевают, что запросчик прикрепляет конкретный сертификат x509 (которого я не знаю).
Я просмотрел .net WebService, обход ssl validation!, который kinda-sorta описывает мою проблему - кроме этого также sorta-sorta не потому, что я не знать, какой сертификат (если есть) я должен ссылаться.
Есть ли способ игнорировать ошибку, не зная/не заботясь о том, какой сертификат вызывает проблему?
-
и, пожалуйста, - детские перчатки, маленькие слова и код "для чайников", поскольку я не совсем тяжелый нападающий.
-
Этот трафик проходит через личную линию, поэтому я понимаю, что игнорирование ошибки сертификата не так важно, как если бы это был открытый интернет-трафик.