Nền nhanh: Chúng tôi phát hành ứng dụng webstart, bao gồm các lọ ứng dụng riêng và nhiều lọ bên thứ ba. Webstart yêu cầu tất cả các jars phân tán được giới thiệu bởi tệp jnlp được ký bởi một chứng chỉ đơn. Do đó chúng tôi ký tất cả các lọ (lọ của chúng tôi và các lọ bên thứ ba) bằng cách sử dụng một chứng chỉ tự ký. Một số lọ bên thứ ba đã được ký bởi bên sản xuất chúng, nhưng chúng tôi chỉ ký lại chúng, và điều này hoạt động tốt. Cho đến bây giờ.Điều gì ngăn Java xác minh các ký hiệu có nhiều thuật toán chữ ký
Vấn đề: Gần đây, chúng tôi đã chuyển từ Java 6 sang Java 7 và đột nhiên webstart từ chối tải một số lọ, phàn nàn: "Thông báo tệp chữ ký SHA1 không hợp lệ". Điều này chỉ xảy ra đối với một số lọ và không phải những người khác, và các chủ đề phổ biến xuất hiện trong số những lọ mà thất bại dường như có nhiều chữ ký.
Sau khi tìm kiếm xung quanh trên S.O. và Internet, có vẻ như thuật toán chữ ký mặc định cho jarsigner của Java đã thay đổi giữa Java 6 và Java 7, từ SHA1 thành SHA256 và nhiều người khác đang đề xuất sử dụng "jarsigner -digestalg SHA1" để giải quyết các vấn đề xác minh. Tôi đã thử điều đó, và chắc chắn rằng đủ các lọ đã ký của chúng tôi hiện đã được xác minh. Vì vậy, điều này dường như là một giải pháp cho vấn đề của chúng tôi.
Từ những gì tôi có thể thu thập, có vẻ chữ ký của bên thứ ba là chữ ký SHA1 và chúng tôi đã ký với mặc định - SHA256 - dẫn đến việc trộn chữ ký. Khi tôi ép SHA1 bằng cách sử dụng công tắc '-digestalg', chúng tôi có hai chữ ký cùng loại và xác minh hiện hoạt động. Vì vậy, có vẻ như vấn đề là do có nhiều chữ ký với các thuật toán khác nhau? Hoặc là có một số yếu tố khác tôi đang mất tích.
Câu hỏi:
- Tại sao nó lại thất bại trong việc xác minh với SHA1 + SHA256, nhưng xác minh với SHA1 + SHA1? Có lý do kỹ thuật nào không? Lý do chính sách bảo mật? Tại sao nó không thể xác minh rằng cả hai chữ ký là chính xác?
- Có bất kỳ hạn chế nào đối với chúng tôi khi sử dụng (tiếp tục sử dụng) SHA1 thay vì SHA256 mặc định hiện tại không?
tôi quan sát thấy rằng ngay cả-dù SHA1 + SHA256 không thành công khi sử dụng các phím khác nhau ... nếu bạn đã đăng ký JAR sử dụng SHA1 + SHA256 với cùng khóa, xác minh không bao giờ thất bại. –