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).
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