Czy można mieć połączenia HTTPS przez serwery proxy? Jeśli tak, jaki rodzaj serwera proxy na to pozwala?
Zduplikowane z Jak używać proxy Socks 5 z klientem Apache HTTP 4?
Czy można mieć połączenia HTTPS przez serwery proxy? Jeśli tak, jaki rodzaj serwera proxy na to pozwala?
Zduplikowane z Jak używać proxy Socks 5 z klientem Apache HTTP 4?
Odpowiedzi:
TLS / SSL (S w HTTPS) gwarantuje, że między tobą a serwerem, z którym się kontaktujesz, nie ma żadnych podsłuchiwaczy, tj. Żadnych serwerów proxy. Zwykle używasz
CONNECT
do otwierania połączenia TCP przez proxy. W takim przypadku proxy nie będzie w stanie buforować, czytać ani modyfikować żadnych żądań / odpowiedzi, a zatem będzie raczej bezużyteczne.Jeśli chcesz, aby serwer proxy mógł odczytywać informacje, możesz zastosować następujące podejście:
Przykładem jest bump SSL Squid . Podobnie, beknięcie można skonfigurować, aby to zrobić. Zostało to również użyte w mniej łagodnym kontekście przez egipskiego dostawcę usług internetowych .
Zauważ, że nowoczesne strony internetowe i przeglądarki mogą wykorzystywać HPKP lub wbudowane szpilki certyfikatów, które pokonują to podejście.
źródło
Unconditionally trusted
odnosi się do certyfikatu CA. Certyfikaty CA nie mają domen. Poprawiłem odpowiedź, podając dwa przykłady, w których to działa / działało w praktyce bez żadnych ostrzeżeń dla użytkownika.Krótka odpowiedź brzmi: jest to możliwe i można to zrobić za pomocą specjalnego serwera proxy HTTP lub serwera proxy SOCKS.
Przede wszystkim HTTPS wykorzystuje SSL / TLS, który z założenia zapewnia pełne bezpieczeństwo, ustanawiając bezpieczny kanał komunikacyjny nad niezabezpieczonym. Jeśli serwer proxy HTTP jest w stanie zobaczyć zawartość, oznacza to, że jest podsłuchiwaczem typu „pośrednik”, co jest sprzeczne z celem SSL / TLS. Musimy więc zastosować pewne sztuczki, jeśli chcemy korzystać z proxy przez zwykły serwer proxy HTTP.
Sztuczka polega na tym, że zmieniamy proxy HTTP w proxy TCP za pomocą specjalnego polecenia o nazwie
CONNECT
. Nie wszystkie serwery proxy HTTP obsługują tę funkcję, ale wiele z nich teraz. Serwer proxy TCP nie widzi przesyłanej zawartości HTTP w postaci zwykłego tekstu, ale nie wpływa to na jego zdolność do przekazywania pakietów w tę iz powrotem. W ten sposób klient i serwer mogą komunikować się ze sobą za pomocą proxy. Jest to bezpieczny sposób przekazywania danych HTTPS przez proxy.Istnieje również niebezpieczny sposób na zrobienie tego, w którym proxy HTTP staje się pośrednikiem. Otrzymuje połączenie inicjowane przez klienta, a następnie inicjuje kolejne połączenie z rzeczywistym serwerem. W dobrze zaimplementowanym protokole SSL / TLS klient zostanie powiadomiony, że serwer proxy nie jest prawdziwym serwerem. Dlatego klient musi ufać proxy, ignorując ostrzeżenie, że wszystko działa. Następnie proxy po prostu odszyfrowuje dane z jednego połączenia, ponownie szyfruje i przekazuje je do drugiego.
Wreszcie, z pewnością możemy proxy HTTPS przez proxy SOCKS , ponieważ proxy SOCKS działa na niższym poziomie. Możesz myśleć, że proxy SOCKS jest zarówno proxy TCP, jak i UDP.
źródło
O ile pamiętam, na serwerze proxy należy użyć zapytania HTTP CONNECT. spowoduje to przekształcenie połączenia żądającego w przezroczysty tunel TCP / IP.
więc musisz wiedzieć, czy serwer proxy, którego używasz, obsługuje ten protokół.
źródło
Jeśli nadal jest to interesujące, oto odpowiedź na podobne pytanie: Konwertuj serwer proxy HTTP na serwer proxy HTTPS w skręconym
Aby odpowiedzieć na drugą część pytania:
Po wyjęciu z pudełka większość serwerów proxy zostanie skonfigurowanych tak, aby zezwalać na połączenia HTTPS tylko do portu 443, więc identyfikatory URI HTTPS z niestandardowymi portami nie będą działać. Jest to zazwyczaj konfigurowalne, w zależności od serwera proxy. Obsługują to na przykład Squid i TinyProxy.
źródło
Oto mój kompletny kod Java, który obsługuje zarówno żądania HTTP, jak i HTTPS przy użyciu serwera proxy SOCKS.
źródło
Możesz to osiągnąć za pomocą technik man-in-the-middle z dynamicznym generowaniem SSL. Przyjrzyj się mitmproxy - jest to oparty na Pythonie serwer proxy MITM z obsługą SSL.
źródło
tunelowanie HTTPS przez SSH (wersja linux):
wszystko, co robisz na hoście lokalnym. następnie:
źródło
Próbowałem
ssh -N -D 12345 login@proxy_server
localhost:12345
ale powodowało to błąd „Niezabezpieczone połączenie” za każdym razem, gdy próbowałem połączyć się z witryną https.
Rozwiązaniem było
Odniesienie z cyfrowej dokumentacji oceanu
Jak bezpiecznie kierować ruch internetowy bez VPN za pomocą tunelu SOCKS
źródło
Nie sądzę, że „mieć połączenia HTTPS przez serwery proxy” oznacza typ ataku typu Man-in-the-Middle na serwer proxy. Myślę, że pyta, czy można połączyć się z serwerem proxy HTTP przez TLS. A odpowiedź brzmi: tak.
Tak, zobacz moje pytanie i odpowiedź tutaj. Serwer proxy HTTPs działa tylko w SwitchOmega
Ten rodzaj serwera proxy wdraża certyfikaty SSL, tak jak robią to zwykłe witryny internetowe. Potrzebujesz jednak
pac
pliku dla przeglądarki, aby skonfigurować połączenie proxy przez SSL.źródło