Using keytool to create certificate chain

  sonic0002        2015-12-17 07:09:33       50,219        1          English  简体中文  Tiếng Việt 

JDK cung cấp một công cụ dòng lệnh -- keytool để xử lý việc tạo khóa và chứng chỉ. Công cụ này có một tập hợp các tùy chọn có thể được sử dụng để tạo khóa, tạo chứng chỉ, nhập khóa, cài đặt chứng chỉ và xuất chứng chỉ, v.v. Trong hướng dẫn này, chúng ta sẽ hướng dẫn cách tạo chuỗi chứng chỉ bằng keytool. Nếu bạn muốn hiểu cách tạo chuỗi chứng chỉ bằng lập trình, vui lòng tham khảo Tạo chứng chỉ trong Java -- Chuỗi chứng chỉ.

Để bắt đầu, trước tiên chúng ta tạo một cặp khóa sẽ được sử dụng làm CA, khóa riêng tư của nó sẽ được sử dụng để ký chứng chỉ mà nó cấp.

keytool -genkeypair -alias ca -keystore test.jks -dname "CN=CA" -storepass password -keypass password -ext bc=ca:true

Lưu ý ở đây có một phần mở rộng với BasicaContraint được tạo ra để cho thấy đó là một CA.

Sau đó, tạo một cặp khóa mà chứng chỉ của nó sẽ được CA ở trên ký.

keytool -genkeypair -alias leaf -keystore test.jks -dname "CN=Leaf" -storepass password -keypass password

Tiếp theo, cần tạo một yêu cầu chứng chỉ cho chứng chỉ "CN=Leaf".

keytool -certreq -keystore test.jks -storepass password -alias leaf -file leaf.csr

Bây giờ tạo chứng chỉ với yêu cầu chứng chỉ được tạo ở trên.

keytool -gencert -keystore test.jks -storepass password -alias ca -infile leaf.csr -outfile leaf.cer

Một tệp chứng chỉ đầu ra leaf.cer sẽ được tạo. Bây giờ hãy xem nội dung của nó là gì.

keytool -printcert -file leaf.cer

Chứng chỉ sẽ trông như thế này:

Owner: CN=Leaf
Issuer: CN=CA
Serial number: 49fdb896
Valid from: Thu Dec 17 20:44:51 CST 2015 until: Wed Mar 16 20:44:51 CST 2016
Certificate fingerprints:
	 MD5:  EE:C8:78:72:69:C0:45:2C:DA:C6:E5:A9:6C:F9:A6:33
	 SHA1: DC:21:3A:7A:6B:BE:55:2A:24:0D:A0:F3:7B:FA:AD:B7:B3:E9:6B:88
	 SHA256: 78:11:E2:42:37:66:16:1D:02:02:03:1B:36:91:FC:C9:98:10:28:43:B6:0E:A2:63:34:93:9F:77:EA:D9:15:AB
	 Signature algorithm name: SHA1withDSA
	 Version: 3

Extensions: 

#1: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 24 67 26 EE 9F 42 BE BF   CE 9E 8B 4D 8E 1E BD AF  $g&..B.....M....
0010: 97 82 3D E4                                        ..=.
]
]

#2: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 23 19 D0 58 48 6B 41 4B   0E 24 42 3A FF 60 38 69  #..XHkAK.$B:.`8i
0010: F1 63 11 12                                        .c..
]
]

Từ chứng chỉ, chúng ta có thể thấy người phát hành của nó là "CN=CA".

Chứng chỉ này có thể được nhập vào một kho khóa hoặc kho lưu trữ đáng tin cậy khác để nó có thể được sử dụng để xác minh danh tính máy chủ trong tương lai.

keytool -importcert -keystore test.jks -storepass password -file leaf.cer

Hoặc nó có thể được cài đặt vào kho khóa gốc để trở thành chứng chỉ lá của chuỗi chứng chỉ cho alias leaf.

keytool -importcert -keystore test.jks -storepass password -file leaf.cer -alias leaf

Sau khi cài đặt chứng chỉ, bạn sẽ thấy mục nhập với alias leaf sẽ có một chuỗi hai chứng chỉ.

Alias name: leaf
Creation date: Dec 17, 2015
Entry type: PrivateKeyEntry
Certificate chain length: 2
Certificate[1]:
Owner: CN=Leaf
Issuer: CN=CA
Serial number: 49fdb896
Valid from: Thu Dec 17 20:44:51 CST 2015 until: Wed Mar 16 20:44:51 CST 2016
Certificate fingerprints:
	 MD5:  EE:C8:78:72:69:C0:45:2C:DA:C6:E5:A9:6C:F9:A6:33
	 SHA1: DC:21:3A:7A:6B:BE:55:2A:24:0D:A0:F3:7B:FA:AD:B7:B3:E9:6B:88
	 SHA256: 78:11:E2:42:37:66:16:1D:02:02:03:1B:36:91:FC:C9:98:10:28:43:B6:0E:A2:63:34:93:9F:77:EA:D9:15:AB
	 Signature algorithm name: SHA1withDSA
	 Version: 3

Extensions: 

#1: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 24 67 26 EE 9F 42 BE BF   CE 9E 8B 4D 8E 1E BD AF  $g&..B.....M....
0010: 97 82 3D E4                                        ..=.
]
]

#2: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 23 19 D0 58 48 6B 41 4B   0E 24 42 3A FF 60 38 69  #..XHkAK.$B:.`8i
0010: F1 63 11 12                                        .c..
]
]

Certificate[2]:
Owner: CN=CA
Issuer: CN=CA
Serial number: 768422fa
Valid from: Thu Dec 17 20:35:40 CST 2015 until: Wed Mar 16 20:35:40 CST 2016
Certificate fingerprints:
	 MD5:  19:FC:D0:AA:59:EA:52:DC:35:35:65:46:0A:AF:91:4F
	 SHA1: BA:17:1B:33:95:4E:1C:7B:68:B0:4C:EE:1C:D8:F4:6A:EE:25:8E:B0
	 SHA256: 99:5B:90:82:99:8D:79:FA:AA:E7:72:B1:C6:76:FE:2A:65:5F:B7:EF:C9:3C:A4:55:C6:27:E2:62:D3:01:99:79
	 Signature algorithm name: SHA1withDSA
	 Version: 3

Extensions: 

#1: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

#2: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 24 67 26 EE 9F 42 BE BF   CE 9E 8B 4D 8E 1E BD AF  $g&..B.....M....
0010: 97 82 3D E4                                        ..=.
]
]

Với hướng dẫn này, bạn sẽ có thể tạo bất kỳ loại chứng chỉ hoặc chuỗi chứng chỉ nào bạn muốn. Rõ ràng là, nếu bạn muốn tạo thứ gì đó có thể được sử dụng trong môi trường sản xuất, bạn cần tìm một CA đáng tin cậy như VeriSign.

Đây chỉ là một hướng dẫn hướng dẫn cách tạo chuỗi chứng chỉ. Nếu bạn muốn biết về kho khóa, bạn có thể tham khảo Các loại kho khóa khác nhau trong Java -- Tổng quan.

JAVA  CERTIFICATE  CERTIFICATE CHAIN  KEYTOOL 

       

  RELATED


  1 COMMENT


nkosev [Reply]@ 2017-05-16 12:53:25

For a whole day i was using open_ssl and then found this article - made what i needed in 1/10 of time and it is actually working for me.

Thanks!



  RANDOM FUN

Doing KT before quitting