Доступ к WebService через HTTPS
Впервые возникла необходимость организовать доступ к Веб-сервису через защищенное соединение. Был уверен на 200%, что надо всего-лишь поменять в URL "http://...." на "https://....". Оказалось что не все так просто.
Вспомните, что делает Internet Explorer, когда вы пытаетесь зайти на защищенный сервер. Говорит Вам: "Сервер подсунул вот такой сертификат, посмотрите и если это сертификат того сервера куда Вы хотели зайти - смело душите гайку ЕШ (В русской винде - ДА)". Вы обычно соглашаетесь неглядя, потому как с интернет-атаками с подменой хоста Вы лично встречались очень редко. Оказывается, то же самое происходит и в .NET приложении. Только диалогов там нет, а потому есть специальное API.
Сначала я почитал тут, и сделал как говорят, но компилятор мне сказал что такой способ устарел и отправил читать MSDN про ServicePointManager.ServerCertificateValidationCallback.
Правильный способ такой:
Вспомните, что делает Internet Explorer, когда вы пытаетесь зайти на защищенный сервер. Говорит Вам: "Сервер подсунул вот такой сертификат, посмотрите и если это сертификат того сервера куда Вы хотели зайти - смело душите гайку ЕШ (В русской винде - ДА)". Вы обычно соглашаетесь неглядя, потому как с интернет-атаками с подменой хоста Вы лично встречались очень редко. Оказывается, то же самое происходит и в .NET приложении. Только диалогов там нет, а потому есть специальное API.
Сначала я почитал тут, и сделал как говорят, но компилятор мне сказал что такой способ устарел и отправил читать MSDN про ServicePointManager.ServerCertificateValidationCallback.
Правильный способ такой:
ServicePointManager.ServerCertificateValidationCallback = delegate {Дополнительная ссылка: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=80799&SiteID=1
return true; // это означает признавать ЛЮБОЙ сертификат
};
Коментарі