Kỹ thuật lập trình Java căn bản - Chương 10: Cài đặt bảo mật

Mục tiêu bài học:

Cuối chương này bạn có thể:

 Mô tả về công cụ JAR

 Tạo và xem một file JAR, liệt kê và trích rút nội dung của nó.

 Sử dụng chữ ký điện tử (Digital Signatures) để nhận dạng Applets

 Tạo bộ công cụ khóa bảo mật (Security key)

 Làm việc với chứng chỉ số (Digital Certificate)

 Tìm hiểu về gói Java.security

pdf11 trang | Chuyên mục: Java | Chia sẻ: dkS00TYs | Lượt xem: 2503 | Lượt tải: 0download
Tóm tắt nội dung Kỹ thuật lập trình Java căn bản - Chương 10: Cài đặt bảo mật, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
T systems. 
Tuỳ chọn keystore cũng có thể được sử dụng trong lệnh keytool, như sau: 
keytool –list keystore c:\java\try 
Câu lệnh này chỉ cho JDK tìm keystore trong file được gọi là „try‟ trong thư 
mục „C:\java\try‟. Nếu không tìm thấy, sẽ hiển thị thông báo lỗi như trên. 
Cài đặt bảo mật (Security Implementation) 237 
Lựa chọn „-genkey‟ có thể được sử dụng cùng với câu lệnh keytool để tạo cặp 
khoá công public/private. Bạn cũng có thể dùng một số các tuỳ chọn khác. 
Dạng đơn giản nhất như sau: 
keytool –genkey –alias “I” 
Bí danh (alias) có thể được dùng lưu trữ, thay thế hoặc xoá cặp khoá. Các bí 
danh keytool không phân biệt chữ hoa, thường. Trong lệnh trên, chúng ta 
không sử dụng tuỳ chọn keystore. Nếu cùng câu lệnh sử dụng tuỳ chọn 
keystore, sẽ được viết lại như sau: 
keytool –genkey –alias “I” –keystore “store” 
Trong lệnh trên, cặp khoá sẽ được lưu trữ trong keystore tên là „store‟, và 
không lưu trong keystore mật định của hệ thống. 
Sau khi nhập lệnh trên vào, và nhấn phím enter, keytool nhắc bạn nhập vào 
mật khẩu (password) cho keystore, như sau: 
Enter keystore password: 
Nhập vào „password‟ là mật khẩu như yêu cầu. 
Tiếp theo, keytool nhắc bạn nhập vào các thông tin bổ sung như: 
What is your first and last name? (Tên và họ) 
[unknown] 
what is the name of your organization unit? 
[unknown]: software Development. 
What is the name of your organization? (Tên của tổ chức) 
[Unknown]: ABC Consultants (tư vấn ABC) 
What is the name of your city or Locality? (tên thành phố hoặc địa 
phương của bạn) 
[Unknown]: California 
What is the name of your State or Province? (tên bang hoặc tỉnh của 
bạn) 
[Unknown]:United States of America 
What is the two-letter country code for this unit?(Mã quốc gia với 2 
ký tự) 
[Unknown]: US 
Khi bạn đã nhập vào các thông tin, keytool hiển thị thông tin sau: 
Is <CN=Bob Fernandes, OU=Software Development, O=ABC 
Consultants, L=California, ST=United States of America, 
C=US>correct? 
[no]: 
238 Core Java 
Cuối cùng, keystool nhắc bạn nhập vào mật khẩu cho khoá riêng của bạn, 
như: 
Enter key password for 
(RETURN if same as keystore password): 
Thông tin trên được sử dụng để kết hợp sự phân biệt tên (name) với bí danh 
(alias). Thông tin trên cũng có thể được đưa vào trực tiếp từ mục chọn „-
dname‟ 
Mật khẩu sau cùng phần biệt với mật khẩu keystore. Nó được dùng truy cập 
khoá riêng của cặp khoá. Mật khẩu có thể trực tiếp chỉ rõ bằng cách sử dụng 
tuỳ chọn „-keypass‟. Nếu mật khẩu không chỉ rõ, mật khẩu keystore được sẽ 
được dùng. Tuỳ chọn „-keypasswd‟ dùng thay đổi mật khẩu. Tuỳ chọn „-
keyalg‟ chỉ rõ thuật toán tạo cặp khoá. 
Khi bạn tạo một khoá và bổ sung nó vào trong keystore, bạn có thể dùng tuỳ 
chọn „-list‟ của keytool để xem khoá có trong keystore hay không. 
Để xoá cặp khoá từ cơ sớ liệu, dùng lệnh sau: 
keytool –delete –alias aliasName 
„aliasName‟ chỉ tên của khoá được xoá. 
Bây giờ, chúng ta tạo cặp khoá riêng/công cộng cho file JAR, chúng ta hãy ký 
danh nó. Lệnh jarsigner dùng để ký danh một file JAR. Nhập lệnh sau vào 
dấu nhắc DOS: 
jarsigner –keystore keyStore –storepass storePassword –keypass 
keyPassword 
Bảng sau cung cấp danh sách của JARFileNames và bí danh: 
Tuỳ chọn Mô tả 
keyStore Tên keystore sử dụng 
storePassword Mật khẩu keystore 
keyPassword Mật khẩu khoá riêng 
JARFileName Tên của file JAR được ký danh 
Alias Bí danh của bộ ký danh 
Bảng 10.2 JARFileNames và bí danh 
Để ký danh file JAR „pack.jar‟, với keystore „store‟, và mật khẩu để lưu trữ và 
các khoá riêng là „password‟, dùng lệnh sau: 
jarsigner –keystore store –storepass password –keypass password 
pack.jar pk 
Cài đặt bảo mật (Security Implementation) 239 
„pk‟ nghĩa là tên bí danh. 
Nếu tuỳ chọn „-keystore‟ không chỉ rõ, thì keystore mặc định được dùng. 
Để chỉ rõ chữ ký của file JAR được định danh, dùng tuỳ chọn „-verify‟. 
jarsigner –verify pack.jar 
„pack.jar‟ chỉ tên file JAR. Nếu chữ ký không hợp lệ, thì ngoại lệ sau được tạo 
ra. 
Jarsigner:java.util.zip.ZipException:invalid entry size (expected 900 
but got 876 bytes) 
Ngược lại, xuất hiện thông báo “jar verified” (jar được xác minh) 
Quá trình xác thực kiểm tra theo các bước sau: 
 Có file „.DSA‟ chứa chữ ký hợp lệ cho file chữ ký .SF không. 
 Có các mục trong file chữ ký là các digest cho mỗi mục tương ứng 
trong file kê khai (manifest file) 
10.5 Chữ ký điện tử (Digital Certificates) 
Cho đến bây giờ, chúng ta đã học cách tạo và ký một file JAR. Bây giờ, chúng 
ta sẽ học cách xuất các chữ ký điện tử (digital certificates), nó được sử dụng 
để xác thực chữ ký của các file JAR. Chúng ta cũng sẽ học cách nhập chữ ký 
điển tử từ file khác vào. 
Chữ ký điện tử là một file, một đối tượng, hoặc một thông báo được ký bởi 
quyền chứng thực (certificate authority). The CA (Certificate authority) cấp 
chứng nhận giá trị các khoá công khai. Chứng nhận X.509 của tổ chức 
International Standards Organization là một dạng chứng nhận số phổ biến. 
Keytool hổ trợ những chứng nhận này. 
Keytool ở bước đầu tiên cần nhận được một chứng nhận (certificate). Chúng 
ta dùng chứng nhận đó tạo cặp khoá private/public. Keytool nhập vào các 
chứng nhận đã được tạo và được ký. Keytool tự động gắn khoá công khái mới 
với một chứng nhận mới. Cùng thực thể đã tạo khoá công khai ký chứng 
nhận này. Đó được gọi là ‘self-signed certificates’ (Chứng nhận tự ký). 
Các chứng nhận này không phải là chứng nhận đáng tin cậy cho định danh. 
Tuy nhiên, chúng cần để tạo các yêu cầu ký danh chứng nhận (certificate-
signing request). 
Keytool và tuỳ chọn được sử dụng để tạo các chứng nhận trên. Câu lệnh sau 
giúp tạo các chứng nhận trên: 
keytool –keystore store –alias mykey –certreq –file mykey.txt 
240 Core Java 
Cặp khoá được tạo là „mykey‟. Tuỳ chọn „-file‟ chỉ tên file để lưu cerrtificate-
signing. 
Dùng tuỳ chọn „-export‟ xuất các chứng nhận này như sau: 
keytool –export –keystore store –alias pk –file mykey 
Câu lệnh trên hiển thị dấu nhắc sau: 
Enter keystore password 
Chứng nhận đã lưu trữ trong 
Để nhập các chứng nhận khác vào keystore của bạn, nhập câu lệnh sau: 
keytool -import –keytool keystore –alias alias –file filename 
Tên được chỉ như là tên file chứa chứng nhận được nhập vào (imported 
certificate). 
Câu lệnh sau chỉ tên bí danh là „alice‟ để nhập chứng nhận trong file „mykey‟ 
vào keystore „MyStore‟: 
keytool –import –keystore MyStore –alias alice –file mykey 
Câu lệnh trên hiển thị dấu nhắc sau: 
Enter keystore password: (Nhập vào mật khẩu keystore) 
Kết quả xuất ra hiển thị hai tuỳ chọn –Owner và Issuer. Nó hiển thị tên công 
ty, nghề nghiệp, tổ chức, địa điểm, bang và tiền tệ. Nó cũng hiển thị số serial 
và thời gian có giá trị. Cuối cùng, nó hỏi là tin cậy chứng nhận này không. 
Chứng nhận được chấp thuận dựa vào sự tin tưởng cá nhân bạn. 
Dùng lệnh „-list‟ liệt kê nội dung của keystore như sau: 
keystool –list –keystore Store 
Câu lệnh trên yêu yều password keystore 
Dùng tuỳ chọn „-alias‟ liệt kê một mục. Dùng lệnh -delete để xoá bí danh 
trong keystore, như sau: 
keytool –delete –keystore Store –alias alias 
Dùng lệnh „-printcert‟ in chứng nhận được lưu trữ trong file, theo cách sau: 
keytool –printcert –file myfile 
Cài đặt bảo mật (Security Implementation) 241 
Dùng lệnh „-help‟ nhận về danh sách tất cả các tuỳ chọn mà keytool hổ trợ: 
keytool -help 
10.6 Các gói bảo mật java (JAVA Security packages) 
Các gói bảo mật Java bao gồm: 
 java.security 
Đây là gói API bảo mật chính. Chứa các lớp và giao diện hỗ trợ mã hoá, 
digest và chữ ký điện tử. 
 java.security.acl 
Chứa các giao diện dùng cài đặt các chính sách điều khiển truy cập 
 java.security.cert 
Cung cấp sự hổ trợ cho chứng nhận X.509 
 java.security.interfaces 
Định nghĩa các giao diện truy nhập Digital Signature Algorithm 
 java.security.spec 
Cung cấp các lớp độc lập và phụ thuộc vào thuật toán mã hoá sử dụng khoá. 
Tóm tắt: 
 Nếu khả năng bảo mật trong applet không đảm bảo, các dữ liệu nhạy 
cảm có thể được sữa đổi hoặc phơi bày. 
 Mục đích chính của JAR là kết nối các file mà applet sử dụng trong một 
file nén duy nhất. Điều này cho phép các applet nạp vào trình duyệt 
một cách hiệu quả. 
 Một file kê khai (manifest file) chứa thông tin về các file lưu trữ. 
 Chữ ký điện tử là một mã hoá kèm với chương trình để nhận diện 
chính xác nguồn gốc của file. 
 Keystore là một cơ sở dữ liệu khoá. 
 Keytool là công cụ khoá bảo mật của java. 
 chứng nhận điện tử là một file, hoặc một đối tượng, hoặc một thông 
báo được ký bởi quyền chứng nhận (certificate authority) 
242 Core Java 
Kiểm tra kiến thức: 
1. File ________là file lưu trữ được nén. 
2. Tuỳ chọn _____, khi dùng với công cụ jar, trích rút tên file từ một lưu 
trữ (.jar) 
3. JAR tự động tạo file kê khai, thậm chí nó không được chỉ ra 
 Đúng/Sai 
4. Thuộc tính______,khi dùng trong thẻ applet, chỉ cho trình duyệt nạp 
file jar, và tìm file class của applet. 
5. Trong chữ ký điện tử, _______được dùng cho mã hoá và 
_________được dùng cho giải mã. 
6. Tất cả các thông tin keytool quản lý, được lưu trữ trong một cơ sở dữ 
liệu gọi là _______ 
7. keytool ở bước đầu tiên cần thiết để nhận được một chứng nhận 
 Đúng/Sai 
8. Gói _______chứa giao diện dùng cài đặt các chính sách điều khiển 
truy nhập. 
Cài đặt bảo mật (Security Implementation) 243 
Bài tập 
Sử dụng các câu lệnh java thực hiện các hành động sau: 
1. Tạo một file jar „core-java.jar‟ chứa các file lớp (.class) và các file 
nguồn. 
2. Liệt kê nội dung của file jar. 
3. Tạo file html nhúng applet CardLayoutDemo.class, file lớp được chứa 
trong file jar. 
4. Trích rút nội dung file jar. 
5. Dùng lệnh keytool với tên bí danh và keystore để tạo ra cặp khoá 
public/private mới. 
6. Ký danh file jar mới được tạo. 
7. Xác minh chữ ký (signature). 
8. Xuất các chứng nhận (certificate) 
9. Liệt kê nội dung của keystore. 
10.In các chứng nhận được lưu trong file. 

File đính kèm:

  • pdfKỹ thuật lập trình Java căn bản - Chương 10_Cài đặt bảo mật.pdf
Tài liệu liên quan