我正在嘗試調試與給定主機的失敗連接。我已經記錄了通過瀏覽器向該主機發出的成功請求以及通過下面的 Go 代碼發出的不成功請求的數據包捕獲:package mainimport ( "crypto/tls" "log")func main() { log.SetFlags(log.Lshortfile) conf := &tls.Config{ //InsecureSkipVerify: true, MinVersion: tls.VersionTLS13, MaxVersion: tls.VersionTLS13, } conn, err := tls.Dial("tcp", "x.x.x.x:443", conf) if err != nil { log.Println(err) return } defer conn.Close() n, err := conn.Write([]byte("hello\n")) if err != nil { log.Println(n, err) return } buf := make([]byte, 100) n, err = conn.Read(buf) if err != nil { log.Println(n, err) return } println(string(buf[:n]))}在檢查成功和不成功請求中的 Client Hello 數據包后,我注意到成功的請求使用 TLSv1.3 而不成功的請求使用 TLSv1.2。我上面的代碼指定我只想在我的請求中使用 TLSv1.3,但無論出于何種原因,請求仍會嘗試使用 TLSv1.2。我試過咨詢用 go 編寫的各種 http 客戶端示例,并確認我使用了正確的語法。有什么想法我在這里做錯了嗎?
1 回答

偶然的你
TA貢獻1841條經驗 獲得超3個贊
TLS 1.3 握手也以 TLS 1.2 開頭Client Hello
如果我們在 golang 代碼中指定 TLS 1.3,在supported_versions
擴展中只有一個TLS 1.3
如果服務器不支持 TLS 1.3 或任何其他原因,握手階段連接失敗,則看起來像是 TLS 1.2 連接失敗。
- 1 回答
- 0 關注
- 101 瀏覽
添加回答
舉報
0/150
提交
取消