ПлАчу от невалидных сертификатов

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Vinechka
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 381
Зарегистрирован: 10.05.2005 (Вт) 4:07
Откуда: Москва

ПлАчу от невалидных сертификатов

Сообщение Vinechka » 23.11.2005 (Ср) 3:13

сабж. Имею вот такой, к примеру, код:
Код: Выделить всё
Dim client As New WebClient()
        client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705")

        Dim data As Stream = client.OpenRead("https://securepage.ru:446/")
        Dim reader As New StreamReader(data)
        Dim s As String = reader.ReadToEnd()
textbox=s
        data.Close()
        reader.Close()

Основная проблема состоит в том, что сертификат для данного сайта не валиден (он self signed). И в интернет эксплорере мы можем набрать "да, доверять этому невалидному сертификату", а вот как програмно это реализовать? Тоесть по хорошему нужно вообще чтобы программа игнорила невалидный сертификат, но вместо этого она вываливает с эксепшеном мол "не удается установить доверенное соедиенение с удаленным узлом". Я уж и про net.security читал (все классы чуть ли не наизусть знаю, все методы и свойства помню, а толку...), но вот походу ничего из этого ну никак не применимо для webclient :(

Я конечно могу и самостоятельно реализовать подключение по ssl протоколу, где невалидность сертификата не будет иметь значение, но к тому моменту я состарюсь... :cry:
Сохраните мне пол жизни плиз, выскажите идеи, как пройти мимо недуга, а?

ЗЫ: мсдн стоит и там написано, что это относится и к первым фреймворкам и ко второму, но я пытаюсь реализовать это на втором. Если это имеет значение... :?
/me почти плачет, хоть и не свойственно это мужикам... имею потрясающую идею, которая поможет огромному кол-ву народа, а реализовать... на этом моменте торможу. Все остальное - почти все классы готовы, и хттп отпарсил (страницу на свой сервер скопировал, без ssl) и в голове алгоритмы вертятся по рассчету некоторых данных, красоту навел в интерфейсе, а все пока впустую... так грустно :roll:
Хээлп мииии!

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 23.11.2005 (Ср) 10:22

Попробуй прикрутить SslStream
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Сообщение Gloom » 23.11.2005 (Ср) 11:27

Я так делал:
Код: Выделить всё
ServicePointManager.CertificatePolicy = new IgnoreCertificate();
...
class IgnoreCertificate:ICertificatePolicy
        {


            bool ICertificatePolicy.CheckValidationResult(ServicePoint srvPoint, System.Security.Cryptography.X509Certificates.X509Certificate certificate, WebRequest request, int certificateProblem)
            {
                return true;
            }

        }


Vinechka
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 381
Зарегистрирован: 10.05.2005 (Вт) 4:07
Откуда: Москва

Сообщение Vinechka » 23.11.2005 (Ср) 11:52

Спасибо, но... это C#? Просто я ничего не могу понять... например что означает вот это: class IgnoreCertificate:ICertificatePolicy? Если можно, то напиши на бэйсике, плиз.

PS: вот я нажрался ночью :oops:

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Сообщение Gloom » 23.11.2005 (Ср) 12:52

Во втором фрэймворке новое свойство появилось - ServerCertificateValidationCallback
На басике можно так изобразить:
Код: Выделить всё
    ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf CertificateValidation.ValidateServerCertificate)
...
    Friend Class CertificateValidation
        Public Shared Function ValidateServerCertificate(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As SslPolicyErrors) As Boolean
            Return True 'Игнорируем любые ошибки
        End Function
    End Class

Vinechka
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 381
Зарегистрирован: 10.05.2005 (Вт) 4:07
Откуда: Москва

Сообщение Vinechka » 23.11.2005 (Ср) 13:41

О! Спасибо, терь разобрался ;)


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46

    TopList