proksi - -->Pelayan Dalam persekitaran ini, pelanggan berada di belakang proksi http, dan pelanggan perlu menggunakan terowong http proksi dalam"/> proksi - -->Pelayan Dalam persekitaran ini, pelanggan berada di belakang proksi http, dan pelanggan perlu menggunakan terowong http proksi dalam">

Rumah >pembangunan bahagian belakang >Golang >Cara menghantar Hello Pelanggan melalui terowong proksi http

Cara menghantar Hello Pelanggan melalui terowong proksi http

王林
王林ke hadapan
2024-02-12 18:06:15499semak imbas

如何通过 http 代理隧道发送 Client Hello

Kandungan soalan

Saya mempunyai pelanggan yang akan mewujudkan sambungan tls ke perkhidmatan bahagian belakang.

Terdapat dua situasi yang saya hadapi.

  1. Sambungan terus ke rangkaian: klien --->pelayan

    Dalam persekitaran ini, pelanggan menyambung terus ke pelayan, seperti yang ditunjukkan dalam kod berikut.

var d tls.dialer
   //...
   d.config = &tls.config{
        //...
   }
   //...
   c1 := d.dial("tcp", addr)
  1. Rangkaian proksi: klien--->proksi--->pelayan

    Dalam persekitaran ini, pelanggan berada di belakang proksi http dan pelanggan perlu menggunakan terowong http proksi untuk memajukan trafik antara klien dan pelayan.

    Saya menggunakan golang.org/x/net/proxy pada bahagian klien untuk menyambung kepada proksi, kerana proksi ialah proksi http, pelanggan harus menggunakan net.dialer untuk menyambung kepada proksi melalui tcp.

dailer, err := proxy.FromURL(proxy, &net.Dialer{
        Timeout:   TCP_CONNECT_TIMEOUT,
        KeepAlive: TCP_KEEPALIVE_TIMEOUT,
    })
   c2 := dailer.Dial("tcp", addr)

Kes 1, pelanggan memulakan sambungan tls Dalam paket trafik rangkaian, pelanggan mencetuskan sambungan tcp Selepas 3 jabat tangan, pelanggan menghantar client hello ke pelayan.

Dalam kes 2, pelanggan mula-mula menggunakan tcp untuk menyambung kepada proksi http (contohnya 10.0.0.1:8080), seterusnya, menghantar connect kepada proksi, dan kemudian proksi mengembalikan connectionestablished , Tetapi klientelahhantar connect到代理,然后代理返回connectionestablished,但是客户端发送client hello ke pelayan.

Untuk kes2, saya tidak tahu bagaimana dan di mana untuk melaksanakan penghantaran di sisi pelanggan client hello?

Terima kasih terlebih dahulu. .

Dalam

, terdapat fungsi

klien

yang boleh dibina daripada rangkaian sedia ada. Sambung, kemudian gunakan

Jabatan Tangantls

tlsConn := tls.Client(conn, &tls.Config{
    Certificates:       []tls.Certificate{*cert},
    InsecureSkipVerify: true,
    ServerName:         sni,
    ClientAuth:         tls.RequestClientCert,
})
err = tlsConn.Handshake()

Atas ialah kandungan terperinci Cara menghantar Hello Pelanggan melalui terowong proksi http. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam