2009-06-09 37 views
40

Tại sao tôi nên ký các tệp JAR của mình?Tại sao tôi nên ký các tệp JAR của mình?

Tôi biết rằng tôi cần ký các tệp JAR phía máy khách (có chứa Applet) để những thứ đặc biệt như truy cập hệ thống tệp có thể được thực hiện, và do đó bit gây phiền nhiễu ở cuối cửa sổ không hiển thị. khác? Và tôi có cần ký các tệp JAR phía máy chủ của mình chứa Servlets, v.v. không?

Một số quy tắc cơ bản về thời gian và thời điểm không ký các JAR sẽ được đánh giá cao - cảm ơn!

+0

trùng lặp với http: // stackoverflow.com/questions/3327020/whats-the-point-of-ký-mã-like-lọ? – Dan

Trả lời

36

Câu trả lời ngắn gọn - không, trừ khi chính sách của công ty buộc bạn.

Câu trả lời dài
lọ Ký là một cách hiệu quả kể khách hàng của bạn "Tôi làm điều này, và tôi chắc rằng điều này sẽ không mess lên hệ thống của bạn. Nếu có, đến với tôi để trả thù". Đây là lý do tại sao các lọ đã ký trong giải pháp phía máy khách được triển khai từ các máy chủ từ xa (applets/webstart) được hưởng các đặc quyền cao hơn so với các giải pháp không được ký.

Trên các giải pháp phía máy chủ, nơi bạn không cần phải xoa dịu các yêu cầu bảo mật JVM, đảm bảo này chỉ dành cho sự an tâm của khách hàng của bạn.
Điều xấu về lọ ký hiệu là chúng tải chậm hơn so với bình chưa ký. Bao nhiêu chậm hơn? đó là CPU bị ràng buộc, nhưng tôi đã nhận thấy hơn 100% thời gian tải. Ngoài ra, các bản vá lỗi khó hơn (bạn phải ký lại vào bình), các bản vá lỗi lớp là không thể (tất cả các lớp trong một gói duy nhất phải có cùng một nguồn chữ ký) và các chẻ tách trở thành một việc vặt. Chưa kể quá trình xây dựng của bạn dài hơn, và rằng giấy chứng nhận thích hợp chi phí tiền bạc (tự ký là bên cạnh vô ích). Vì vậy, trừ khi chính sách của công ty buộc bạn, đừng ký các lọ ở phía máy chủ và giữ các lọ chung trong các phiên bản đã ký và không ký (đã ký, đi tới triển khai phía máy khách, không ký tên vào codebase phía máy chủ).

+0

Tại sao CPU bị ràng buộc? Tôi nghĩ rằng việc kiểm tra CRL là một hành động trực tuyến và phụ thuộc nhiều vào tốc độ kết nối Internet, có lẽ tập trung vào độ trễ ở đó. –

+0

Khi bạn tải tệp jar đã ký, quá trình gọi là "xác minh" sẽ diễn ra. Cả việc ký và xác minh đều đắt tiền vì các thuật toán mã hóa phải được thực hiện để thực hiện thao tác, bất kể nó là gì. Tuy nhiên: tốn kém liên quan đến việc không ký/không xác minh. Ý tôi là: thời gian trôi qua có thể hoặc có thể không phải là một vấn đề, tùy thuộc vào hoàn cảnh. –

+0

Đây là lời khuyên khủng khiếp, khủng khiếp. – PopKernel

0

Ký một tệp jar, giống như sử dụng chứng chỉ trong các ngữ cảnh khác, được thực hiện để mọi người sử dụng nó biết nó đến từ đâu. Mọi người có thể tin tưởng rằng Chris Carruthers sẽ không viết mã độc hại, và vì vậy họ sẵn sàng cho phép truy cập applet của bạn vào hệ thống tệp của họ. Chữ ký cho họ một số đảm bảo rằng bình thực sự được tạo ra bởi bạn, chứ không phải bởi kẻ mạo danh hay người mà họ không tin tưởng.

Trong trường hợp lọ máy chủ hoặc thư viện, thường không cần phải cung cấp loại bảo lãnh đó cho bất kỳ ai. Nếu đó là máy chủ của bạn, sau đó bạn biết những gì bạn đang sử dụng lọ và nơi họ đến từ, và bạn có thể tin tưởng mã của riêng bạn không được độc hại.

2

Lý do chính đáng có thể là nếu bạn không bao giờ muốn bất kỳ ai có thể lẻn vào các lớp modfied được gọi bằng mã của bạn.

Thật không may là bao gồm chính bạn :-D Vì vậy, điều này chỉ được thực hiện nếu bạn thực sự cần nó. Kiểm tra khái niệm "kín lọ".

1

Về mặt ứng dụng: Từ 6u10, Sun JRE thay thế biểu ngữ cảnh báo với hình tam giác cảnh báo ít gây khó chịu (từ 6u12, IIRC) (cần thiết để hỗ trợ cửa sổ có hình dạng và trong suốt). 6u10 cũng cho phép kiểm soát truy cập tệp thông qua API dịch vụ JNLP.

Nguyên tắc đặc quyền tối thiểu nói rằng bạn không nên ký vào các lớp của tệp jar. An ninh không nhất thiết phải dễ dàng.

Chỉ cần hiển thị hộp thoại chứng chỉ không được hiểu là có nghĩa là toàn bộ nội dung của trang web phải được tin cậy.

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