Google TV配对协议 - Go的SSL握手错误(golang)

时间:2011-12-05 05:56:27

标签: go google-tv

我正在为Google TV配对协议编写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警报握手失败。

有什么想法吗? Google TV是否期望获得客户端证书?我在任何地方都没有看到任何客户证书的需要。

如果有人想帮忙搞清楚,请输入以下代码: https://github.com/dustywilson/go-polo

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

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

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

我的结果代码当然是开源的。谢谢你的帮助。

1 个答案:

答案 0 :(得分: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 / unique identifier”  * /