tls: получена негабаритная запись длиной XXXXX
Я использую встроенную стандартную клиентскую библиотеку сокетов SSL (net + crypto/tls) следующим образом:
conn, err := net.Dial("tcp", "exploit.im:5222")
//...
config := tls.Config{InsecureSkipVerify: true}
tls_conn := tls.Client(conn, &config)
fmt.Println(tls_conn.Handshake())
И я получаю сообщение:
conn, err: = net.Dial ("tcp", "exploit.im:5222")
Мне удалось выяснить, что это как-то связано с максимальным размером пакета по умолчанию (16384 + 2048, установленный в common.go:31). Есть ли какой-нибудь стандартный способ обхода (без исправления этого значения и перестройки библиотеки)?
1 ответ
Вы получаете сообщения такого рода, если пытаетесь выполнить рукопожатие SSL с партнером, который не отвечает с SSL. В этом случае, вероятно, это какой-то сервер XMPP, и с XMPP у вас сначала есть рукопожатие в виде простого текста, прежде чем вы начнете с SSL. Попытка начать напрямую с SSL приведет к интерпретации отклика открытого текста сервера как фрейма SSL, что может привести к странным сообщениям об ошибках, подобных этому.