Keystore là một repository chứa các khóa bí mật, các chứng chỉ và các khóa đối xứng. Mỗi dòng trong keystore sẽ có một alias để định danh.
Chúng ta sẽ dùng tool keytool được cài đặt cùng với JDK để quản lý keystore.
Tạo mới một keystore chứa một cặp khóa RSA:
keytool -genkeypair \
-keyalg RSA \
-keysize 2048 \
-validity 365 \
-alias aliasname \
-keypass keypassword \
-keystore keystore.jks \
-storepass keystorepasswordGiải thích câu lệnh trên:
-genkeypair: tạo cặp khóa bất đối xứng-keyalg: thuật toán của cặp khóa-keysize: kích thước khóa (đơn vị bit)-validity: thời hạn sử dụng của khóa (đơn vị ngày)-alias: tên của entry ở trong keystore-keypass: password cho alias-keystore: tên của file chứa keystore-storepass: password cho toàn bộ keystore
Tạo CSR từ khóa riêng tư có sẵn:
keytool -certreq \
-alias aliasname \
-file aliasname.csr \
-keystore keystore.jksTạo self-signed certificate ở trong keystore mới:
keytool -genkey \
-alias aliasname \
-keyalg RSA \
-validity 365 \
-keystore keystore.jksImporting and Exporting
Import certificate đã được ký vào keystore:
keytool -importcert \
-trustcacerts \
-alias aliasname \
-file aliasname.crt \
-keystore keystore.jksExport certificate dưới định dạng DER:
keytool -exportcert \
-alias aliasname \
-file aliasname.der \
-keystore keystore.jksViewing Keystore Entries
Xem keystore:
keytool -list \
-keystore keystore.jksKết quả có thể là:
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 1 entry
aliasname, Jan 30, 2024, PrivateKeyEntry,
Certificate fingerprint (SHA-256): C2:20:C3:EA:FA:AD:61:8A:59:DC:54:57:9B:F3:EC:3C:EB:CD:60:AD:F6:FF:AB:10:FA:2B:E9:AA:75:38:52:DAXem thông tin chứng chỉ trong file chứng chỉ:
keytool -printcert \
-file aliasname.crtKết quả có thể là:
Owner: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
Issuer: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
Serial number: 3c81cb7f867ce157
Valid from: Tue Jan 30 14:23:36 ICT 2024 until: Wed Jan 29 14:23:36 ICT 2025
Certificate fingerprints:
SHA1: 4F:DF:D6:01:9B:9A:5F:A9:31:D0:61:DE:FE:17:8D:02:D0:D3:85:AC
SHA256: C2:20:C3:EA:FA:AD:61:8A:59:DC:54:57:9B:F3:EC:3C:EB:CD:60:AD:F6:FF:AB:10:FA:2B:E9:AA:75:38:52:DA
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
Extensions:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 6D C7 5D CE 93 32 69 B3 14 63 14 64 D6 70 2E EA m.]..2i..c.d.p..
0010: 6B CD AC 5B k..[
]
]Modifying Keystore
Đổi password của keystore:
keytool -storepasswd \
-keystore keystore.jksXóa một alias ở trong keystore:
keytool -delete \
-alias aliasname \
-keystore keystore.jksĐổi tên alias:
keytool -changealias \
-alias aliasname \
-destalias newaliasname \
-keystore keystore.jks