【问题标题】:Google TV Pairing Protocol -- SSL Handshake Error with Go (golang)Google TV 配对协议——Go (golang) 的 SSL 握手错误
【发布时间】:2012-11-19 01:08:21
【问题描述】:

我正在为 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

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

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

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

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

【问题讨论】:

    标签: go google-tv


    【解决方案1】:

    客户端证书由 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/唯一标识符” */

    【讨论】:

    • 您是说它希望我在握手时发送客户端证书吗?如果是这样,那将是有道理的,我应该给你买一只小狗,因为它很棒。如果没有,请告诉我我对这条消息的理解哪里出了问题。
    • 我还没有完成整个过程,但看起来在初始配对请求期间需要 SSL,per:code.google.com/p/google-tv-remote/source/browse/src/com/google/…
    • 我现在将此标记为答案。我还没有验证它,但它似乎很有用。特别是似乎需要一个客户端 SSL 证书,我没有使用它。如果不知何故事实并非如此,或者有人提出了更好或更完整的答案,我会将其转给他们。但我很感激您的意见,并且讨厌让这个问题处于未回答的状态,因为它可能得到了足够好的回答,所以......来吧。谢谢。
    • 是的,您确实需要客户端证书。配对协议的安全性依赖于 SSL 相互身份验证:双方提供一个证书,每一方计算一个作为双方证书函数的值,然后由一方显示该值并由另一方接受作为输入。 (来源:我是协议的作者 :)。
    猜你喜欢
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2018-07-10
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多