[英]Does changing SSL Cert on a server break code?
編輯:我應該用什么來捕捉錯誤?
我有它無法連接到錯誤消息的地方,並且默認為通用消息。
public string ResponseError {
get {
string retVal = "";
try {
retVal = xmlElements.GetElementValue( FullResponse, "/VancoWS/Response/Errors/Error/ErrorDescription" );
} catch {
retVal = "There has been a problem processing your request. Please try again!";
}
return retVal;
}
}
支付網關表示,他們更改了其SSL證書,此后,我們的Web應用程序未建立成功的連接。 該代碼是用VS.NET 2008 .NET 3.5編寫的,我相信使用C#。 據我所知,這看起來像建立連接的代碼:
/* Method to perform web post */
private void SendBuffer(string strXml, out string fullResponse, out bool success)
{
String BaseAddress = Url + "?xml=";
try
{
System.Net.WebClient objRequest = new System.Net.WebClient();
objRequest.Encoding = System.Text.Encoding.ASCII;
byte[] buffer = System.Text.Encoding.ASCII.GetBytes(strXml);
byte[] responseBuffer = objRequest.UploadData(BaseAddress, "POST", buffer);
fullResponse = System.Text.Encoding.ASCII.GetString(responseBuffer);
success = true;
}
catch (Exception ex)
{
fullResponse = ex.ToString();
success = false;
}
}
付款網關說他們沒有從我們的服務器獲得任何連接。 我聯系了網絡托管服務商,他們說他們沒有做任何更改來阻止連接。
主持人說,他們可以在沒有無效證書的情況下正常訪問URL。
有問題的網址: https : //www.vancoservices.com/cgi-bin/ws2.vps
他們還仍在運行SSLv3,因此協議更改或強制使用TLS 1.x都不成問題。
有什么想法可以解決這個問題嗎?
看起來他們已經設置了未由有效授權機構簽名的證書,或者您的Web服務器沒有在受信任的CA中對該證書進行簽名的授權機構。
要了解證書是否存在問題,您可以嘗試連接到正在執行此代碼的Web服務器,打開Web瀏覽器,然后嘗試連接到該地址。 瀏覽器將告訴您證書是否有效(如果證書無效,您可能會收到警告)。
如果要在代碼中禁用證書驗證,則可以嘗試以下操作:
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
顯然,這不是您要在生產系統上要做的事情,但是您可以嘗試使用它來了解他們設置的SSL證書是否有問題以及它是否是自簽名的。
代碼周圍的“ try”子句隱藏了所有正在發生的錯誤。 您可以嘗試做的一件事是注釋掉try語句,以使代碼因錯誤而中斷和崩潰:
// try
{
...
}
或添加一個catch子句:
try
{
...
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
只需將以下內容添加到您的配置並更改日志文件路徑。 如果正在進行握手/驗證,這將給人一種感覺
http://msdn.microsoft.com/zh-CN/library/ty48b824(v=vs.110).aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.