Доступ к сайту HTTPS через прокси-сервер - PullRequest
1 голос
/ 15 апреля 2009

Я добавляю код для использования прокси-сервера для доступа в Интернет. Код работает нормально при запросе файла из обычного (HTTP) расположения, но не работает при доступе к безопасному расположению (HTTPS).

Это код, который отлично работает:

URL = "http://UnSecureSite.net/file.xml"
Dim wr As HttpWebRequest = CType(WebRequest.Create(URL), HttpWebRequest)
Dim proxy As System.Net.IWebProxy
proxy = WebRequest.GetSystemWebProxy
wr.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim ws As HttpWebResponse = CType(wr.GetResponse(), HttpWebResponse)

// (more work here)

Как только я меняю URL, чтобы перейти на HTTPS, мне возвращается 407.

У кого-нибудь есть идеи?

URL = "https://SecureSite.net/file.xml"
Dim wr As HttpWebRequest = CType(WebRequest.Create(URL), HttpWebRequest)
Dim proxy As System.Net.IWebProxy
proxy = WebRequest.GetSystemWebProxy
wr.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim myCache As New CredentialCache()
myCache.Add(New Uri("https://SecureSite.net"), "Basic", New NetworkCredential(UserName, Password))
wr.Credentials = myCache
Dim ws As HttpWebResponse = CType(wr.GetResponse(), HttpWebResponse)

// (more work here)

1 Ответ

5 голосов
/ 16 апреля 2009

HTTPS-запрос через веб-прокси отличается от стандартного HTTP-запроса. Обычный HTTP-запрос будет использовать метод GET. Однако HTTPS-запрос должен использовать метод CONNECT. Затем прокси просто установит туннель к серверу. Последующие сообщения будут отправляться напрямую между клиентом и сервером через прокси-туннель. Прокси не может интерпретировать данные, проходящие между ними.

В нормальных ситуациях:

Client -+- [CONNECT] ---> Proxy --- [DIRECT TCP] -+-> Server
        |                   |                     |
        +-------------[ENCRYPTED TCP]-------------+

Я недостаточно знаком с кодом VB, чтобы знать, происходит ли это. Однако я подозреваю, что это не так. Самый простой способ проверить это - перехватить сообщение, отправленное прокси. Убедитесь, что он начинается с «CONNECT ...».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...