2009-04-15 5 views
1

프록시 서버를 사용하여 인터넷에 액세스하는 코드를 추가하고 있습니다. 코드는 정상 (HTTP) 위치에서 파일을 요청할 때 정상적으로 작동하지만 보안 위치 (HTTPS)에 액세스 할 때는 작동하지 않습니다. 프록시 서버를 통해 HTTPS 사이트에 액세스

가 잘 작동 코드입니다 : 내가 HTTPS에 갈 수있는 URL을 변경 자마자

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) 

, 나는 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) 

답변

5

웹 프록시를 통한 HTTPS 요청은 표준 HTTP 요청과 다릅니다. 일반 HTTP 요청은 GET 메소드를 사용합니다. 그러나 HTTPS 요청은 CONNECT 메소드를 사용해야합니다. 그런 다음 프록시는 단순히 서버에 대한 터널을 설정합니다. 후속 메시지는 프록시 터널을 통해 클라이언트와 서버간에 직접 전송됩니다. 프록시는 중간에 흐르는 데이터를 해석 할 방법이 없습니다.

에서 정상 상황 :

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

그게 무슨 일이 일어나고 있는지 알고 VB에서 코드를 충분히 익숙하지입니다. 그러나, 나는 그렇지 않다고 생각합니다. 가장 쉬운 검사 방법은 프록시에 전송되는 메시지를 가로 채는 것입니다. "CONNECT ..."로 시작해야합니다.

+0

+1 눈부신 답변. 나는 종종 HTTPS가 웹 프록시를 통해 어떻게 작동하는지 궁금해했다. –

관련 문제