2011-12-05 21 views
5

Google TVペアリングプロトコルのGoパッケージを作成しています。しかし、私はTLSハンドシェイクの問題に遭遇しているようです。Google TVペアリングプロトコル - Go(golang)によるSSLハンドシェイクエラー

sock, err := tls.Dial("tcp", "10.8.0.1:9552", &tls.Config{InsecureSkipVerify: true}) 

この行は私にハンドシェイクエラーを与えます。正確なエラーメッセージはremote error: handshake failureです。カール経由で同じホスト/ポートを試しても、curl: (35) error:14094410:SSL routines:SSL3_READ_BYTES:sslv3アラートハンドシェイクに失敗します。

アイデア? Google TVはクライアントの証明書を期待していますか?私はどこにでもクライアント証明書の必要性についての参照は見ていません。誰もがそれを把握する手助けしたい場合

は、ここではコードです: https://github.com/dustywilson/go-polo

READMEファイルには、それをチェックアウトするための簡単なコードを持っています。これはmDNSを使用しないため、Google TVボックスのIPアドレスを知る必要があります。あなた(誰か、誰か)がこれを実行して、別の結果が得られたら、教えてください。

Google TVリモートコードgoogle-tv-remoteを既に使っています。もっと便利なのはgoogle-tv-pairing-protocolで、私がやっていることと同等のJava/Androidプロジェクトです。もちろん、私はすでにそのコードを注いだ。 Go TLSパッケージの問題は、Go自体(問題ありません)、Google TVの証明書の読み方(1年前に問題があったことがわかっています)、または自分のコードの問題(通常はおそらく、私はそれを見ていないだけです)。

ところで、私はこれをLogitech Revueでテストしており、自己署名入りのSSL証明書を持っています。それはいかなる形でも根ざしたり、変更したりしていません。

私の結果のコードは、もちろんオープンソースです。助けてくれてありがとう。

答えて

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 /一意の識別子" */

+0

譲渡時にクライアント証明書を送付する予定ですか?もしそうなら、それは理にかなっていて、私はあなたにすごく親切な子犬を買うべきです。もしそうでなければ、私はこのメッセージの私の理解においてどこが間違っていたかを教えてください。 –

+1

まだ全プロセスを進めていませんが、最初のペアリングリクエストではSSLが必要です(http://code.google.com/p/google-tv-remote/source/browse/src)。 /com/google/android/apps/tvremote/PairingActivity.java#240 – saxman

+0

私はこれを現在の答えとしています。私はそれを確認していないが、それは役に立つと思われる。特に、私は使用しなかったクライアントのSSL証明書が必要と思われます。何とかそれが事実でないことが判明した場合、または誰かがより良いまたはより完全な回答を伴っている場合は、私はそれらに切り替えます。しかし、私は入力がうまくいき、未回答の状態でこれを残すことを嫌います。ありがとう。 –

関連する問題