(1) Trang web đó có từ năm 2014; chính sách không giới hạn hoàn toàn không còn được sử dụng cho các phiên bản Oracle Java sau năm 2017 và trước đó (ví dụ: 7u80) nó chỉ quan trọng đối với mã hóa đối xứng hơn 128 bit mà ở đây sẽ chỉ ảnh hưởng đến bộ AES256 chứ không phải bộ AES128. (Đó là chẳng bao giờ áp dụng cho OpenJDK, mặc dù OpenJDK dưới 8 hầu như chỉ khả dụng trên các bản phân phối Linux chính như RedHat và Debian có thể phân bổ nhân viên để xây dựng và đóng gói; bạn không nói bạn đang sử dụng cái gì.)
(2) Java (1.)7 làm hỗ trợ các bộ mật mã CBC mà bạn hiển thị (không phải bộ mã hóa GCM và đối với các phiên bản Oracle dưới 7u171, bộ mã hóa AES256 yêu cầu chính sách không giới hạn) nhưng CHỈ khi TLS1.2 được sử dụng (các bộ mật mã này không tồn tại trong các giao thức phiên bản thấp hơn) và theo mặc định, j7 vô hiệu hóa phía máy khách TLS1.2 (và 1.1).
Nếu bạn rõ ràng đang thực hiện kết nối với API này bằng HttpsURLKết nối
(ví dụ. URL mới("https://something").openConnection()
) bạn có thể tinh chỉnh socketfactory để sử dụng SSLContext.getInstance("TLSv1.2")
và/hoặc rõ ràng setEnabledProtocols
trên ổ cắm. Nếu bạn đang sử dụng phần mềm trung gian khác, ví dụ: Apache HttpComponents thường có các phương pháp tương tự nhưng chúng khác nhau về chi tiết; bạn sẽ cần cho chúng tôi xem mã và mã đó có thể thuộc về StackOverflow không có ở đây. Nếu bạn đang gọi một thư viện thực hiện kết nối nội bộ, nó có thể có các tùy chọn hoặc không.
Đối với tất cả hoặc nhiều phương thức gọi, bạn có thể thay đổi các giá trị mặc định như SSLContext.setDefault()
hoặc HttpsURLConnection.setDefaultSSLSocketFacfory()
nếu các giá trị mặc định này không bị ghi đè trong mã có liên quan và thực hiện một thay đổi toàn cầu như thế không gây rắc rối cho bất kỳ thứ gì khác đang chạy trong cùng một JVM của bạn.
Ngoài ra (và nhiều chủ đề khác!) nếu bạn có bản cập nhật j7 gần đây, tôi khá chắc chắn rằng họ đã nhập thuộc tính hệ thống jdk.tls.client.protocols
mà bạn có thể đặt thành ví dụ: TLSv1,TLSv1.1,TLSv1.2
để thay đổi mặc định mà không thay đổi mã (nhưng chỉ một lần nữa nếu không bị ghi đè và không gây hại cho bất kỳ điều gì khác). Tôi không nhớ chính xác thời điểm này nhưng chắc chắn là sau 7u80, vì vậy bạn sẽ chỉ có nó với sự hỗ trợ của Oracle có trả phí hoặc OpenJDK được hỗ trợ bởi người khác có hoặc không trả tiền. Thật dễ dàng để thử và có thể công việc.