Как избежать исключения при попытке рукопожатия с сервером с ssl-сертификатом через веб-сокет в C#?
Я пытаюсь это сделать
handshakeчерез веб-сокет в c# на сервер с Самозаверяющим сертификатом и получил исключение, как показано ниже:
Exception got as below: <pre>The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
Я скачал ssl сертификат полученный с сервера и успешно импортированный на стороне клиента согласно приведенной ниже ссылке:
https://support.quovadisglobal.com/kb/a66/how-do-i-install-a-digital-certificate-onto-windows-7.aspx
Установленный сертификат поступил в промежуточный магазин на проверку. Но даже после этого при попытке общения получаю одно и то же исключение:
базовое соединение было закрыто: не удалось установить доверительные отношения для защищенного канала SSL/TLS. ---> Система.Безопасность.Идентификация.Исключение AuthenticationException: удаленный сертификат недействителен в соответствии с процедурой проверки.
Что я уже пробовал:
Основной код, как показано ниже:
На стороне сервера он размещается следующим образом https://10.15.1.5/Test.aspx
Подключение к клиенту, как показано ниже:
Подключения("ВСС://10.15.1.5/тест.aspx-файл/)
public async Task Connect(string uri)
{
Нить.Спать(1000);
пробовать
{
txtLog.Text += "клиент:процесс подключения запущен под" + MethodInfo.GetCurrentMethod().Name + Environment.NewLine;
webSocket = новый ClientWebSocket();
ждите webSocket.ConnectAsync(новый Uri(uri), CancellationToken.Никто);
}
поймать (исключение бывший)
{
txtError.Text += "Client:Connectivity Process Failure under" + MethodInfo.GetCurrentMethod().Name + ex.Message.ToString() + Environment.NewLine;
txtError.Text += "клиент:сбой процесса подключения под" + MethodInfo.GetCurrentMethod().Name + ex.InnerException.ToString() + Environment.NewLine;
txtError.Text += "Client:Connectivity Process Failure under" + MethodInfo.GetCurrentMethod().Name + ex.StackTrace.ToString() + Environment.NewLine;
//throw ex;
}
наконец
{
if (webSocket != null)
через WebSocket.Располагать();
}
}