5

我正在为 Google TV Pairing Protocol 编写一个 Go 包。但我似乎遇到了 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也会发出警报握手失败。

有任何想法吗?谷歌电视可能需要客户端证书吗?我在任何地方都没有看到任何关于需要客户证书的参考。

如果有人想帮助解决这个问题,代码如下: https ://github.com/dustywilson/go-polo

自述文件有简单的代码来检查它。您必须知道 Google 电视盒的 IP 地址,因为它不使用 mDNS。如果您(某人,任何人)运行此程序并得到不同的结果,请告诉我。

我已经在google-tv-remote浏览了 Google TV Remote 代码。一个更有用的是google-tv-pairing-protocol,它是我正在做的等效 Java/Android 项目。当然,我已经倾注了该代码。我认为这是 Go 本身的问题(不太可能),Go TLS 包不知道如何读取 Google TV 证书的问题(我知道这是一年前的问题),或者我的代码有问题(通常会最有可能,但我只是没有看到)。

顺便说一句,我正在 Logitech Revue 上测试它,它有一个自签名 SSL 证书。它没有以任何方式植根或修改。

当然,我生成的代码将是开源的。感谢您的帮助。

4

1 回答 1

2

客户端证书由 Java 远程客户端在运行时生成,并存储以供将来使用。查看代码:

http://code.google.com/p/google-tv-remote/source/browse/src/com/google/android/apps/tvremote/KeyStoreManager.java

您可能遇到了无效的证书。根据代码,您需要一个特定的CN。

/* 返回应该在新证书中使用的名称。* 格式为:“CN=anymote/PRODUCT/DEVICE/MODEL/唯一标识符” */

于 2011-12-05T22:41:15.137 回答