2012-01-08 23 views
5

Tôi có một giao thức nơi có một ổ cắm đồng bằng thường xuyên được nâng cấp lên giao thức SSL/TLS. Tôi cần có khả năng kiểm soát thời gian chờ để xử lý bắt tay SSL cũng như các thông số khác như các phiên bản giao thức được cho phép. (ví dụ: tắt SSLv3).thiết lập bắt tay timeout và ổ cắm thuộc tính SSLSocketFactory

Bạn có thể làm tất cả điều này ngoại trừ thời gian chờ bắt tay qua javax.net.ssl.SSLSocketFactory, bạn có thể gọi createSocket(socket, host port, autoClose), thiết lập các thiết lập bổ sung trên trở SSLSocket, sau đó gọi startHandshake để bắt tay. Nhưng dường như không có cách nào để đặt cài đặt thời gian chờ bắt tay và cài đặt mặc định là khá nhỏ.

Không bao giờ sợ hãi, android.net.SSLCertificateSocketFactory là ở đây !, này cho phép bạn kiểm soát các thiết lập thời gian chờ bắt tay, nhưng nó cũng làm thay đổi hành vi của createSocket(socket, host, port, autoClose) để làm cái bắt tay thực tế, vì vậy vào thời điểm bạn nhận được SSLSocket của bạn trở lại từ nhà máy quá nó muộn để làm bất cứ điều gì khác mà có thể ảnh hưởng đến cái bắt tay (như tắt SSLv3).

Có một số cách để làm cả hai? Tôi cần để có thể thực hiện điều này trên Api v8

(SSLContext/SSLParameters có vẻ hữu ích nhưng là Api v9, nhưng nó cũng giống như SSLCertificateSocketFactory tạo bối cảnh riêng của nó, do đó, thiết lập mặc định sẽ không giúp).

Trả lời

-1

Đối với lựa chọn giao thức cụ thể bạn đã thử SSLSocket.setEnabledProtocols trước khi gọi startHandshake?

Đối với cái bắt tay thiết lập mà bạn có thể sử dụng SSLCertificateSocketFactory thời gian chờ.

+1

Nếu bạn nhận được các ổ cắm từ SSLCertificateSocketFactory, mà bạn cần phải làm gì để đặt thời gian chờ, nó tự động gọi startHandshake cho bạn, do đó bạn không nhận được bất kỳ cơ hội để thiết lập các giao thức trên dụ socket. – superfell

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