Я пишу пакет Go для протокола сопряжения Google TV. Но, похоже, у меня проблема с рукопожатием TLS.
sock, err := tls.Dial("tcp", "10.8.0.1:9552", &tls.Config{InsecureSkipVerify: true})
Эта строка дает мне ошибку рукопожатия. Точное сообщение об ошибке: remote error: handshake failure
. Если я попробую тот же хост / порт через curl, он также выдаст curl: (35) error:14094410:SSL routines:SSL3_READ_BYTES:sslv3
предупреждение о сбое рукопожатия.
Есть идеи? Возможно, Google TV ожидает сертификат клиента? Я не видел ни одного упоминания о необходимости сертификата клиента.
Если кто-то хочет помочь разобраться, вот код:
https://github.com/dustywilson/go-polo
Файл README содержит простой код для проверки. Вам нужно будет знать IP-адрес вашего окна Google TV, поскольку он не использует mDNS. Если вы (кто-то, кто-нибудь) запустили это, и вы получили другие результаты, дайте мне знать.
Я уже просмотрел код удаленного доступа к Google TV по адресу google-tv-remote . Более полезным является google-tv-pairing-protocol , который эквивалентен проекту Java / Android тому, что я делаю. Конечно, я уже вылил этот код. Я думаю, что это проблема либо с самим Go (маловероятно), либо проблема с пакетом Go TLS, который не знает, как читать сертификат Google TV (я знаю, что это была проблема год назад), либо проблема с моим кодом (обычно скорее всего, но я просто этого не вижу).
Кстати, я тестирую это на Logitech Revue, и у него есть самозаверяющий сертификат SSL. Это не укоренено или изменено никаким образом.
Мой полученный код будет, конечно, с открытым исходным кодом. Спасибо за помощь.