ฉันสร้าง CA และใบรับรองด้วย cfssl
แต่ฉันไม่สามารถนำเข้าใบรับรองในที่เก็บคีย์ JAVA ด้วย คีย์ทูล
.
ใบรับรองที่สร้างขึ้นเข้ากันไม่ได้กับการใช้งาน keycert/ Java x509 หรือไม่ หรือฉันทำอะไรผิด?
สร้าง CA
# สร้าง my-ca{,-key}.pem
cfssl พิมพ์ค่าเริ่มต้น csr \
| cfssl gencert -initca - \
| cfssljson -เปลือย my-ca
#สินค้านำเข้า
keytool -importcert -alias my-ca -file my-ca.pem -storepass changeit -noprompt
หมายเหตุ: keytool -importcert ทำงานได้ดีในกรณีนี้
สร้างใบรับรอง
แมว cfssl.json
#{
# "การลงนาม": {
# "ค่าเริ่มต้น": {
# "หมดอายุ": "87600h",
# "การใช้งาน": ["การลงนาม", "การเข้ารหัสคีย์", "การรับรองความถูกต้องของเซิร์ฟเวอร์", "การรับรองความถูกต้องของลูกค้า"]
# }
# }
#}
#สร้างใบรับรอง
เสียงสะท้อน {} \
| cfssl gencert -ca=my-ca.pem -ca-key=my-ca-key.pem -config=cfssl.json -hostname=my-host - \
| cfssljson - เปลือยโฮสต์ของฉัน
#ใบรับรองนำเข้า
keytool -importcert -file my-host.pem -alias my-host -storepass changeit -noprompt
แต่ตอนนี้กลับตอบกลับไปว่า
ข้อผิดพลาดของเครื่องมือคีย์: java.lang.Exception: อินพุตไม่ใช่ใบรับรอง X.509
สิ่งนี้ทำให้ฉันสับสน openssl ดูเหมือนจะพอใจกับใบรับรอง:
opensl x509 -text - ใน my-host.pem
# เอาต์พุตดูเหมือนตกลง ecdsa-with-SHA256 ดูส่วนสำคัญ
opensl x509 - ใน my-host.pem \
| แตกต่าง my-host.pem -
# ไม่มีความแตกต่างระหว่าง x509 ที่สร้างใหม่
- เอาต์พุตข้อความ
ข้อสังเกตเพิ่มเติม: CURL และเว็บเบราว์เซอร์สามารถรับใบรับรองได้ เฉพาะแอปพลิเคชัน Java เท่านั้นที่บ่น
ข้อมูล:
รุ่น cfssl
#เวอร์ชัน: 1.2.0
#การแก้ไข: การพัฒนา
#รันไทม์: go1.8.1
จาวา --version
#openjdk 14.0.2 2020-07-14
#OpenJDK Runtime Environment (รุ่น 14.0.2+12-Ubuntu-120.04)
#OpenJDK 64-Bit Server VM (รุ่น 14.0.2+12-Ubuntu-120.04, โหมดผสม, การแชร์)
เครื่องมือคีย์ -showinfo -tls
# ดูส่วนสำคัญสำหรับผลลัพธ์แบบเต็ม
-แสดงข้อมูล -tls