HTTP CONNECT: Cara Proxy HTTP Menangani HTTPS
Ikuti permintaan HTTPS melalui proxy HTTP, bedakan respons CONNECT dari respons server asal, dan temukan tahap kegagalan tunnel.
“200 Connection Established” berarti proxy menerima sebuah tunnel. Situs web belum mengembalikan halaman. Berikutnya adalah TLS dengan tujuan, lalu permintaan HTTPS itu sendiri.
Dari koneksi proxy hingga respons situs web
- Klien terhubung ke endpoint proxy.
- Klien meminta proxy terhubung ke host dan port tujuan.
- Proxy menerima atau menolak permintaan tersebut.
- Setelah diterima, klien menegosiasikan TLS dengan tujuan melalui tunnel.
- Klien mengirim permintaan HTTPS dan menerima respons situs web di dalam TLS.
Koneksi proxy yang ditolak, tunnel yang ditolak, dan kesalahan sertifikat terjadi di titik berbeda dalam urutan ini. Temukan langkah terakhir yang selesai sebelum mengubah pengaturan.
Pertukaran CONNECT
Dalam HTTP/1.1, pertukaran sederhananya seperti ini:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection Established
Target permintaan berupa host dan port, tanpa path atau kueri situs web. Setelah respons CONNECT berhasil, koneksi membawa byte tunnel. Untuk tujuan HTTPS, pertukaran klien berikutnya adalah handshake TLS.
Baca status numeriknya alih-alih mencocokkan frasa alasan dalam bahasa Inggris. Proxy dapat memakai teks berbeda untuk status yang sama.
Amati dengan curl
Untuk proxy HTTP di port lokal 8080:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Ganti alamat listener dengan endpoint Anda; jika membutuhkan kandidat, lihat daftar proxy HTTP dan uji entri yang dipilih. Daftar bypass kosong memastikan pemanggilan ini memilih proxy. Secara berurutan, cari koneksi proxy, respons CONNECT, verifikasi sertifikat tujuan, dan respons situs web. Teks log yang persis bergantung pada build curl.
Tujuan dapat mengembalikan 404, 429, atau 500 setelah proxy menerima tunnel. Kegagalan juga dapat terjadi selama TLS sebelum ada respons HTTP apa pun.
Berhenti di mana?
| Pengamatan | Pemeriksaan berikutnya |
|---|---|
| Koneksi ke proxy ditolak | Alamat proxy, port listener, proses, dan akses jaringan. |
| Proxy mengembalikan 407 | Akun proxy dan skema autentikasi. |
| Proxy menolak tujuan atau port | Kebijakan akses dan tujuan CONNECT yang diizinkan. |
| Tunnel terbuka, lalu verifikasi TLS gagal | Nama tujuan, penyimpanan kepercayaan, jam, dan intersepsi TLS terkelola jika ada. |
| TLS berhasil dan situs web mengembalikan kesalahan | Respons situs web. |
Saat membandingkan, pertahankan salah satu sisi: coba tujuan lain melalui proxy yang sama, atau bandingkan tujuan yang sama melalui rute langsung yang diizinkan.
Tunnel tetap memiliki operator
Proxy mengetahui tujuan CONNECT serta menangani waktu dan volume lalu lintas. TLS ujung ke ujung biasa melindungi konten aplikasi situs web dari proxy yang tidak mengakhiri sesi TLS tersebut. Proxy intersepsi terkelola yang dipercaya klien memiliki hubungan kepercayaan yang berbeda.