Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.74.227] |
|
Сообщ.
#1
,
|
|
|
Привет!
Я использую протокол https для передачи данных между клиентом и сервером. На сервере имеется сертификат подписанный доверительной организацией. На клиенте я хочу проверить подлиность сервера. Для этого я на клиенте я написал следующий код: string sLink = "https://" + .... ... System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; }; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sLink); request.Method = "GET"; request.Timeout = Timeout.Infinite; request.AllowWriteStreamBuffering = false; .... HttpWebResponse response = (HttpWebResponse)request.GetResponse(); .... Stream reader = response.GetResponseStream(); .... Я понимаю что в обработчике ServerCertificateValidationCallback мне необходимо найти в системе сооответсвующий сертификат этой доверительной организации, взять открытый ключ, дешифровать с его помощью цифровую подпись сертификата который пришел от сервера и сравнить ее сравнить его на соответствие этому сертификату. Но я не совсем понимаю где и как искать соответсвующий сертификат на клиенте и как правильно провести верификацию не изобретая велосипед. Уверен есть какая-то стандартная реализация этой ф-и. Могли бы вы привести какой-либо пример? |