2010-07-10 2 views
2

HTTP 헤더를 편집하고 기록하기 위해 HttpListener 및 HttpWebRequest/Response를 사용하는 간단한 프록시를 만들었습니다. HTTP를 통해 모든 것이 잘 동작하지만 HTTPS는 다른 이야기입니다. MSDN에서 HttpListener를 읽었습니다. & HTTPS를 통해 HttpWebRequest/Response가 작동합니다. 분명히 나에게 뭔가 잘못하고있다..NET HttpListener/HttpWebRequest/HttpWebResponse 및 HTTPS

IE는 아래의 접두사를 가리키며 요청을 포착하는 것 같습니다.

string[] prefixes = new string[] { "http://127.0.0.11:8080/", "https://127.0.0.12:8081/" }; 

HttpListener listener = new HttpListener(); 
// Add the prefixes. 
foreach (string s in prefixes) 
{ 
    _listener.Prefixes.Add(s); 
} 

환영합니다. 저는 C# newb입니다! :)

답변

2

https : //는 이와 같이 프록시 될 수 없습니다. HTTPS (RFC2818에서와 같이)는 SSL/TLS를 사용하여 프록시를 통과하는 보안 터널을 엽니 다. 프록시로서, HTTPS 컨텐츠에 액세스 할 수 없습니다. 단지 불투명 한 바이너리 암호화 된 goop이기 때문입니다.

당신이 기대하는 것은 기본적으로 아무도 사용하지 않는 SHTTP (RFC2660)와 같습니다.

컴퓨터에서 발생하는 HTTPS 트래픽 (예 : 디버깅 용)을 보려면 NetMon을 사용할 수 있습니다. 그러나 HTTPS에 대한 정의가 불가능한 경우 다른 컴퓨터에서이 트래픽을 검사 할 수있는 프록시는 사용자가 중간자 공격을 성공한 것입니다.

0

원하는 것을 따라 웹 디버깅을 위해 널리 사용되는 프록시 인 fiddler을 살펴보십시오. HTTPS를 처리합니다.

1

Cylon Cat이 말한 것 이외에도 Fiddler 프록시이지만 자신의 응용 프로그램에서 사용할 수있는 형태의 FiddlerCore도 있습니다. HTTPS를 지원합니다.

1

이것은 실제로 .NET 프레임 워크로 수행하기가 쉽습니다. 네가하고 싶은 일은 피 들러와 같은 중간자 프록시 (man-in-the-middle proxy)를 작성하는 것이다. 그렇다면 SSLStream으로 쉽게 할 수 있습니다. 프록시를 사용하는 클라이언트는 유효하지 않은 SSL 인증서에 대한 경고를 받게되지만 여전히 트래픽을 프록시 처리하고 검사 할 수 있습니다.

터널링 (man-in-the-middle) 대신 https 종료를하는 꽤 기능적인 (캐싱 포함!) 프록시 서버가 있습니다. 코드 프로젝트 : http://www.codeproject.com/KB/IP/HTTPSDebuggingProxy.aspx