จะแสดงรายการใบรับรองที่เก็บไว้ในที่เก็บคีย์ PKCS12 ด้วย keytool ได้อย่างไร?


คำตอบ:


146

หากที่เก็บคีย์เป็นประเภท PKCS12 ( .pfx) คุณต้องระบุด้วย-storetype PKCS12(เพิ่มตัวแบ่งบรรทัดเพื่อให้อ่านง่าย):

keytool -list -v -keystore <path to keystore.pfx> \
    -storepass <password> \
    -storetype PKCS12

7
หากคุณต้องการยูทิลิตี้อินเทอร์เฟซแบบกราฟิกฉันพบ Keystore Explorer การแทนที่ GUI แบบโอเพ่นซอร์สสำหรับ keytool ยูทิลิตี้บรรทัดคำสั่ง Java, jarsigner และ jadtool keystore-explorer.sourceforge.net
David GarcíaGonzález

ขอบคุณสำหรับเคล็ดลับ @David ดีใจที่ได้เห็นโครงการยังคงเปิดใช้งานไม่เหมือนโครงการอื่น ๆ อีกมากมาย!
John Rix

เคล็ดลับที่ยอดเยี่ยมเกี่ยวกับเครื่องมือฟรีแวร์นั้น - โดยทั่วไปฉันชอบบรรทัดคำสั่ง แต่มันดีมาก
Rhubarb

1
สิ่งนี้ควรใช้กับ ( .p12) หรือไม่ ฉันได้รับjava.io.IOException: Invalid keystore format
IgniteCoders

สิ่งนี้ใช้ไม่ได้กับที่เก็บใบรับรอง P12 (มีนาคม 2019 เวอร์ชัน KeyTool ใหม่ล่าสุด)
Harald Coppoolse

29

คุณยังสามารถใช้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

3
แค่บอกว่ามันใช้ได้กับไฟล์. p12 ด้วย มีประโยชน์มากขอบคุณ!
Rich Ross

@PhilipRego แน่ใจว่าคุณทำได้เพียงแค่ใส่คำพูดเดียว
slm

ฉันต้องการเห็นนามแฝงที่เรียกว่าชื่อมิตร ต้องใช้ "openssl pkcs12 -nodes -in </path/to/file.pfx> -passin pass: <pfx's password>"
Domo

6

คุณสามารถลงรายการ (รายละเอียดใบรับรอง) ด้วย 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

โปรดพิจารณาการอธิบายรหัสของคุณและวิธีที่จะช่วยเพื่อให้ผู้อื่นได้รับประโยชน์จากสิ่งนี้
Amit Verma

อัปเดตคำตอบ
harry


2

สิ่งที่ขาดหายไปในคำถามและคำตอบทั้งหมดคือคุณอาจต้องใช้ข้อความรหัสผ่านเพื่ออ่านข้อมูลสาธารณะจากที่เก็บคีย์ 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

แค่อยากจะเพิ่มว่าเพราะฉันไม่ได้หาคำตอบด้วยตัวเองและใช้เวลามากมายเพื่อหาคำตอบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.