Использование Visual Studio 2005 - C # 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! Какая разновидность типа sorta описывает мою проблему - кроме того, что вроде своего рода sorta нет, потому что я не знаю, какой сертификат (если есть) я следует ссылаться.
Могу ли я игнорировать ошибку, не зная / не заботясь о том, какой сертификат вызывает проблему?
и, пожалуйста, - детские перчатки, маленькие слова и код "для чайников", так как я не совсем сильный нападающий.
Этот трафик идет по частной линии - поэтому я понимаю, что игнорирование ошибки сертификата не так уж важно, как если бы это был открытый интернет-трафик.