ค่อนข้างตรงไปตรงมาโดยใช้ jdk6 เป็นอย่างน้อย ...
bash $ keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN = foo.example.com, L = Melbourne, ST = Victoria, C = AU'
ป้อนรหัสผ่านที่เก็บคีย์:
ป้อนรหัสผ่านใหม่:
ป้อนรหัสผ่านที่สำคัญสำหรับ
(ส่งคืนหากเหมือนกับรหัสผ่านที่เก็บคีย์):
bash $ keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
ป้อนรหัสผ่านที่เก็บคีย์: asdasd
ใบรับรอง:
ข้อมูล:
เวอร์ชัน: 3 (0x2)
หมายเลขผลิตภัณฑ์: 1237334757 (0x49c03ae5)
อัลกอริทึมลายเซ็น: dsaWithSHA1
ผู้ออก: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
ความถูกต้อง
ไม่ก่อน: 18 มี.ค. 00:05:57 น. 2009 GMT
หลัง: 16 มิ.ย. 00:05:57 น. 2009 GMT
เรื่อง: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
ข้อมูลคีย์สาธารณะของหัวเรื่อง:
อัลกอริทึมคีย์สาธารณะ: dsaEncryption
คีย์สาธารณะ DSA:
ผับ:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
bash $ keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
ป้อนรหัสผ่านที่เก็บคีย์ปลายทาง:
ป้อนรหัสผ่านใหม่:
ป้อนรหัสผ่านที่เก็บคีย์ต้นทาง:
รายการสำหรับนามแฝง foo นำเข้าสำเร็จแล้ว
คำสั่งนำเข้าเสร็จสมบูรณ์: นำเข้า 1 รายการสำเร็จ 0 รายการล้มเหลวหรือยกเลิก
bash $ openssl pkcs12 -in foo.p12 -out foo.pem
ป้อนรหัสผ่านนำเข้า:
MAC ยืนยันตกลง
ป้อนรหัสผ่าน PEM:
การตรวจสอบ - ป้อนรหัสผ่าน PEM:
bash $ openssl x509 -text -in foo.pem
ใบรับรอง:
ข้อมูล:
เวอร์ชัน: 3 (0x2)
หมายเลขผลิตภัณฑ์: 1237334757 (0x49c03ae5)
อัลกอริทึมลายเซ็น: dsaWithSHA1
ผู้ออก: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
ความถูกต้อง
ไม่ก่อน: 18 มี.ค. 00:05:57 น. 2009 GMT
หลัง: 16 มิ.ย. 00:05:57 น. 2009 GMT
เรื่อง: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
ข้อมูลคีย์สาธารณะของหัวเรื่อง:
อัลกอริทึมคีย์สาธารณะ: dsaEncryption
คีย์สาธารณะ DSA:
ผับ:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
bash $ openssl dsa -text -in foo.pem
อ่านคีย์ DSA
ป้อนรหัสผ่าน PEM:
คีย์ส่วนตัว: (1024 บิต)
ส่วนตัว:
00: 8f: b1: af: 55: 63: 92: 7c: d2: 0f: e6: f3: a2: f5: ff:
1a: 7a: fe: 8c: 39: dd
ผับ:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
คุณจบลงด้วย:
- foo.jks - ที่เก็บคีย์ในรูปแบบ java
- foo.p12 - ที่เก็บคีย์ในรูปแบบ PKCS # 12
- foo.pem - คีย์และใบรับรองทั้งหมดจากที่เก็บคีย์ในรูปแบบ PEM
(ไฟล์สุดท้ายนี้สามารถแบ่งออกเป็นคีย์และใบรับรองได้หากต้องการ)
สรุปคำสั่ง - เพื่อสร้างที่เก็บคีย์ JKS:
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
สรุปคำสั่ง - เพื่อแปลงที่เก็บคีย์ JKS เป็นที่เก็บคีย์ PKCS # 12 จากนั้นเป็นไฟล์ PEM:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
หากคุณมีใบรับรองมากกว่าหนึ่งรายการในที่เก็บคีย์ JKS ของคุณและคุณต้องการส่งออกเฉพาะใบรับรองและคีย์ที่เชื่อมโยงกับนามแฝงอย่างใดอย่างหนึ่งคุณสามารถใช้รูปแบบต่อไปนี้:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcalias foo \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
สรุปคำสั่ง - เพื่อเปรียบเทียบที่เก็บคีย์ JKS กับไฟล์ PEM:
keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
openssl x509 -text -in foo.pem
openssl dsa -text -in foo.pem