Trong quá trình đàm phán TLS, khách hàng gửi danh sách mật mã được hỗ trợ đến máy chủ, máy chủ chọn một máy chủ và bắt đầu mã hóa. Tôi muốn thay đổi mật mã này được gửi tới máy chủ của Android, khi tôi đang sử dụng HttpsURLConnection
để liên lạc.Làm thế nào để ghi đè lên bộ mã hóa được gửi tới máy chủ bằng Android khi sử dụng HttpsURLConnection?
Tôi biết rằng tôi có thể sử dụng setSSLSocketFactory
trên đối tượng HttpsURLConnection
để thiết lập để sử dụng SSLSocketFactory
. Điều này rất hữu ích khi tôi muốn thay đổi máy chủ tin cậy, vv được sử dụng bởi SSLSocket
được trả về bởi SSLSocketFactory
.
Tôi biết rằng nói chung danh sách ciphersuite này có thể được chỉnh sửa bằng cách sử dụng đối tượng SSLParameters
và chuyển đến đối tượng SSlsocket
hoặc SSLEngine
bằng cách sử dụng các phương pháp mà chúng cung cấp.
NHƯNG SSLSocketFactory
dường như không hiển thị các phương pháp như vậy!
Tôi không thể tìm cách thay đổi SSLParameters
trong số các đối tượng được trả về SSLSocket
được tạo bởi SSLSocketFactory
Tôi chuyển đến HttpsURLConnection
.
Việc cần làm?
Tôi đoán điều này cũng liên quan đến Java nói chung, không chỉ Android. Có thể có cách OO để thực hiện điều đó (ví dụ: mở rộng SSLSocketFactory
và cung cấp cho HttpsURLConnection
?)
độ chính xác nhỏ: đây là javax.net.ssl.SSLSocketFactory và không apatche SSLSocketFactory. –
SSLPinningTrustManager ở đây là gì? là "SSLPinningTrustManager" là lớp do người dùng định nghĩa là Android Studio không thể giải quyết, nếu có, thì điều gì có thể thay thế? – Amritesh
@Amritesh có thể là "SSLPinningTrustManager' đề cập đến [triển khai này] (https://github.com/duladissa/SSLPinnigExample/blob/master/app/src/main/java/com/litedreamz/sslpinnigexample/util/SSLPinningTrustManager.java) –