ฉันต้องการแสดงรายการใบรับรองที่เก็บไว้ในที่เก็บคีย์ PKCS12
ที่เก็บคีย์มีส่วนขยาย .pfx
ฉันต้องการแสดงรายการใบรับรองที่เก็บไว้ในที่เก็บคีย์ PKCS12
ที่เก็บคีย์มีส่วนขยาย .pfx
คำตอบ:
หากที่เก็บคีย์เป็นประเภท PKCS12 ( .pfx
) คุณต้องระบุด้วย-storetype PKCS12
(เพิ่มตัวแบ่งบรรทัดเพื่อให้อ่านง่าย):
keytool -list -v -keystore <path to keystore.pfx> \
-storepass <password> \
-storetype PKCS12
.p12
) หรือไม่ ฉันได้รับjava.io.IOException: Invalid keystore format
คุณยังสามารถใช้openssl
เพื่อทำสิ่งเดียวกันให้สำเร็จ:
$ openssl pkcs12 -nokeys -info \
-in </path/to/file.pfx> \
-passin pass:<pfx's password>
MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
localKeyID: XX XX XX XX XX XX XX XX XX XX XX XX XX 48 54 A0 47 88 1D 90
friendlyName: jedis-server
subject=/C=US/ST=NC/L=Raleigh/O=XXX Security/OU=XXX/CN=something1
issuer=/C=US/ST=NC/L=Raleigh/O=XXX Security/OU=XXXX/CN=something1
-----BEGIN CERTIFICATE-----
...
...
...
-----END CERTIFICATE-----
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
คุณสามารถลงรายการ (รายละเอียดใบรับรอง) ด้วย keytool และคุณไม่จำเป็นต้องพูดถึงประเภทร้านค้า
keytool -list -v -keystore cert.p12 -storepass <password>
Keystore type: PKCS12
Keystore provider: SunJSSE
Your keystore contains 1 entry
Alias name: 1
Creation date: Jul 11, 2020
Entry type: PrivateKeyEntry
Certificate chain length: 2
openssl pkcs12 -info -in keystore_file
สิ่งที่ขาดหายไปในคำถามและคำตอบทั้งหมดคือคุณอาจต้องใช้ข้อความรหัสผ่านเพื่ออ่านข้อมูลสาธารณะจากที่เก็บคีย์ PKCS # 12 (.pfx) หากคุณต้องการข้อความรหัสผ่านหรือไม่ขึ้นอยู่กับวิธีสร้างไฟล์ PKCS # 12 คุณสามารถตรวจสอบโครงสร้าง ASN1 ของไฟล์ (โดยเรียกใช้ผ่านตัวแยกวิเคราะห์ ASN1, openssl หรือ certutil ก็สามารถทำได้เช่นกัน) หากข้อมูล PKCS # 7 (เช่น OID นำหน้า 1.2.840.113549.1.7) แสดงเป็น 'เข้ารหัส' หรือ ด้วยการเข้ารหัสข้อมูลจำเพาะหรือหากตำแหน่งของข้อมูลในโครงสร้าง asn1 อยู่ด้านล่างโหนดที่เข้ารหัสคุณจะไม่สามารถอ่านได้หากไม่มีความรู้เกี่ยวกับข้อความรหัสผ่าน หมายความว่าคำสั่ง 'openssl pkcs12' ของคุณจะล้มเหลวโดยมีข้อผิดพลาด (เอาต์พุตขึ้นอยู่กับเวอร์ชัน) สำหรับผู้ที่สงสัยว่าเหตุใดคุณจึงสนใจใบรับรอง PKCS # 12 โดยที่ไม่มีความรู้เกี่ยวกับข้อความรหัสผ่าน ลองนึกภาพว่าคุณมีที่เก็บแป้นพิมพ์จำนวนมากและวลีจำนวนมากและคุณไม่ดีจริงๆในการจัดระเบียบและคุณไม่ต้องการทดสอบชุดค่าผสมทั้งหมดใบรับรองภายในไฟล์สามารถช่วยให้คุณทราบว่ารหัสผ่านใดที่อาจเป็น หรือคุณกำลังพัฒนาซอฟต์แวร์เพื่อโยกย้าย / ต่ออายุที่เก็บคีย์และคุณต้องตัดสินใจล่วงหน้าว่าจะเริ่มขั้นตอนใดตามใบรับรองที่มีอยู่โดยไม่มีการโต้ตอบกับผู้ใช้ ดังนั้นตัวอย่างหลังจึงทำงานโดยไม่มีข้อความรหัสผ่านขึ้นอยู่กับโครงสร้าง PKCS # 12 หรือคุณกำลังพัฒนาซอฟต์แวร์เพื่อโยกย้าย / ต่ออายุที่เก็บคีย์และคุณต้องตัดสินใจล่วงหน้าว่าจะเริ่มขั้นตอนใดตามใบรับรองที่มีอยู่โดยไม่มีการโต้ตอบกับผู้ใช้ ดังนั้นตัวอย่างหลังจึงทำงานโดยไม่มีข้อความรหัสผ่านขึ้นอยู่กับโครงสร้าง PKCS # 12 หรือคุณกำลังพัฒนาซอฟต์แวร์เพื่อโยกย้าย / ต่ออายุที่เก็บคีย์และคุณต้องตัดสินใจล่วงหน้าว่าจะเริ่มขั้นตอนใดตามใบรับรองที่มีอยู่โดยไม่มีการโต้ตอบกับผู้ใช้ ดังนั้นตัวอย่างหลังจึงทำงานโดยไม่มีข้อความรหัสผ่านขึ้นอยู่กับโครงสร้าง PKCS # 12
แค่อยากจะเพิ่มว่าเพราะฉันไม่ได้หาคำตอบด้วยตัวเองและใช้เวลามากมายเพื่อหาคำตอบ