2011-12-05 35 views
5

Tôi đang viết gói Go cho Giao thức ghép nối Google TV. Nhưng tôi dường như đang gặp vấn đề với cái bắt tay TLS.Giao thức ghép nối Google TV - Lỗi bắt tay SSL với Go (golang)

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

Dòng đó mang lại cho tôi một lỗi bắt tay. Thông báo lỗi chính xác là: remote error: handshake failure. Nếu tôi thử cùng một máy chủ/cổng thông qua curl, nó cũng sẽ gây ra lỗi bắt tay cảnh báo curl: (35) error:14094410:SSL routines:SSL3_READ_BYTES:sslv3.

Bất kỳ ý tưởng nào? Google TV có mong đợi một chứng chỉ ứng dụng khách có thể không? Tôi đã không thấy bất kỳ tài liệu tham khảo đến sự cần thiết cho một cert khách hàng bất cứ nơi nào.

Nếu bất cứ ai muốn giúp con nó ra, đây là các mã: https://github.com/dustywilson/go-polo

Các tập tin README có mã dễ dàng để kiểm tra xem nó ra. Bạn sẽ phải biết địa chỉ IP cho hộp Google TV của mình vì điều này không sử dụng mDNS. Nếu bạn (ai đó, bất cứ ai) chạy điều này và bạn nhận được kết quả khác nhau, hãy cho tôi biết.

Tôi đã xem mã Google TV Remote ở số google-tv-remote. Một cái hữu ích hơn là google-tv-pairing-protocol là dự án Java/Android tương đương với những gì tôi đang làm. Tất nhiên tôi đã rót qua mã đó. Tôi nghĩ rằng đó là vấn đề với Go (không), một vấn đề với gói Go TLS không biết cách đọc chứng chỉ của Google TV (tôi biết đó là vấn đề một năm trước) hoặc một vấn đề với mã của tôi (thường sẽ có nhiều khả năng, nhưng tôi chỉ không nhìn thấy nó).

Nhân tiện, tôi đang thử nghiệm điều này trên Revit của Logitech và nó có chứng chỉ SSL tự ký. Nó không bắt nguồn từ hoặc sửa đổi trong bất kỳ cách nào.

Mã kết quả của tôi sẽ là mã nguồn mở, tất nhiên. Cảm ơn sự hỗ trợ.

Trả lời

2

Chứng chỉ ứng dụng khách được tạo bởi ứng dụng khách Java từ xa khi chạy và được lưu trữ để sử dụng trong tương lai. Kiểm tra mã tại địa chỉ:

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

Bạn có thể chạy vào một cert không hợp lệ. Theo mã, bạn cần một CN cụ thể.

/* Trả về tên sẽ được sử dụng trong chứng chỉ mới. * Định dạng là: "CN = anymote/SẢN PHẨM/THIẾT BỊ/MÔ HÌNH/mã nhận dạng duy nhất" */

+0

Bạn có nói rằng tôi muốn gửi chứng chỉ máy khách tại thời điểm bắt tay không? Nếu vậy, điều đó sẽ có ý nghĩa và tôi nên mua cho bạn một con chó con để trở nên tuyệt vời. Nếu không, hãy cho tôi biết nơi tôi đã đi sai trong sự hiểu biết của tôi về thông điệp này. –

+1

Tôi chưa từng bước qua toàn bộ quy trình, nhưng có vẻ như SSL là bắt buộc trong yêu cầu ghép nối ban đầu, mỗi: http://code.google.com/p/google-tv-remote/source/browse/src /com/google/android/apps/tvremote/PairingActivity.java#240 – saxman

+0

Tôi đang gắn cờ đây làm câu trả lời ngay bây giờ. Tôi đã không xác minh nó, nhưng nó có vẻ hữu ích. Đặc biệt có vẻ như một cert SSL client là cần thiết, mà tôi không sử dụng. Nếu bằng cách nào đó mà hóa ra không phải là trường hợp hoặc ai đó đến cùng với một câu trả lời tốt hơn hoặc đầy đủ hơn, tôi sẽ chuyển nó cho họ. Nhưng tôi đánh giá cao đầu vào và ghét để lại điều này trong một trạng thái chưa được trả lời vì nó có thể được trả lời đủ tốt, vì vậy ... ở đây ya đi. Cảm ơn. –

Các vấn đề liên quan