Bài đăng nổi bật

Hướng dẫn thay đổi thư mục root mặc định của Docker trên Linux

Hoàn cảnh: người viết gặp một trường hợp như này Được team hạ tầng cấp cho một máy chủ gồm 2 phân vùng lưu trữ, 1 phân vùng 20GB được gắn và...

08 tháng 3, 2012

Những vấn đề trong việc sử dụng Signed Applet

Bài này được tôi đúc rút kinh nghiệm từ thực tế khi xây dựng một applet sử dụng chữ ký số ký và mã hóa lên thư điện tử.
Dưới đây là các khó khăn tôi vấp phải và cách khắc phục:
1. Applet chỉ chạy với AppletViewer mà khi lên trình duyệt thì không chạy
  • Lý do: do applet sử dụng trong mục đích này có nhiều thao tác liên quan tới vấn đề bảo mật với máy ảo java nên đòi hỏi phải được ký mới có thể chạy được.
  • Cách khắc phục: tất nhiên là bạn phải ký cho applet này rồi. Bạn có thể sử dụng rất nhiều công cụ để ký, ở đây tôi sử dụng netbean bởi vì netbean hỗ trợ người dùng tự động ký cho applet (thời hạn là 6 tháng) đồng thời kí luôn lên tất cả các lib đi kèm với applet. Để yêu cầu netbean ký cho applet bạn làm như sau: Chọn Properties của project --> Web Start --> Chọn Customize trong phần Signing --> và chọn self-sign by generated key hoặc signed by a specify key
2. Xuất hiện các lỗi ClassNotFound khi chạy trên trình duyệt mặc dù bạn đã thêm đầy đủ các thư viện và applet đã chạy với AppletViewer

  • Lý do:
    Thứ nhất: applet được ký chỉ hoạt động với các thư viện đã được ký cùng với applet đó --> với các thư viện không được ký cùng applet thì nó sẽ không nhận ra.
    Thứ hai: Các thư viện đi kèm applet có sử dụng các class từ các thư viện khác --> tức là nó đang sử dụng các thư viện không được ký hoặc được ký nhưng lại không cùng chữ ký mà nó đang sử dụng (Cái này hơi phức tạp tí nhưng đại loại là thế)
    Do vậy có thể nói tóm lại là không phải do applet của bạn không nhận ra Class kia mà là thư viện bạn sử dụng không nhận ra class đó.
  • Khắc phục: Cái này hên xui, nếu bạn tìm được source code của cái thư viện chứa class bị thiếu hoặc của thư viện dùng class bị thiếu thì vui lòng bỏ công sức ra thêm nó vào applet của bạn thay vì thêm thư viện đã đóng gói.
3. Làm thế nào để xem stacktrace trong applet

  • Lý do: nếu bạn viết applet, bạn gần như không được cung cấp đầy đủ các công cụ debug (nếu bạn không biết cách mở nó ra)
  • Khắc phục: để có thể dễ dàng debug bạn hãy làm như sau: vào control panel --> java --> chọn tab advance và tick chọn tất cả các mục của phần debug rồi chọn show console trong phần java console
4. Tôi bị lỗi khi deploy một serverlet có sử dụng các thư viện java đã được ký.
  • Thường lỗi phổ biến nhất là bạn sẽ nhận được thông báo: "Invalid signature file digest for Manifest main attributes".
  • Nguyên nhân: do trong các file jar có chứa các file chữ kí, chính các file này gây ra; các file đó thường có đuôi là SF, DSA hoặc RSA.
  • Cách giải quyết: bạn hãy dùng một chương trình hỗ trợ nén và giải nén để xóa các file này đi.

2 nhận xét: