我正在为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证书。它没有任何根源或修改。
我的结果代码当然是开源的。谢谢你的帮助。
答案 0 :(得分:2)
客户端证书由Java远程客户端在运行时生成,并存储以供将来使用。查看代码:
您可能遇到了无效的证书。根据代码,您需要一个特定的CN。
/ *返回应在新证书中使用的名称。 *格式为:“CN = anymote / PRODUCT / DEVICE / MODEL / unique identifier” * /