Làm cách nào để liệt kê các chứng chỉ được lưu trữ trong kho khóa PKCS12 với keytool?


Câu trả lời:


146

Nếu kho khóa là kiểu PKCS12 ( .pfx), bạn phải chỉ định nó bằng -storetype PKCS12(thêm dấu ngắt dòng để dễ đọc):

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

6
Nếu bạn thích một tiện ích giao diện đồ họa, tôi đã tìm thấy Keystore Explorer, một GUI mã nguồn mở thay thế cho các tiện ích dòng lệnh Java keytool, jarigner và jadtool. keystore-explorer.sourceforge.net
David García González

Cảm ơn vì mẹo @David. Rất vui khi thấy dự án vẫn đang hoạt động, không giống như rất nhiều dự án khác như vậy!
John Rix

tip tuyệt vời trên rằng công cụ phần mềm miễn phí - Tôi thường thích dòng lệnh nhưng điều này là rất tốt đẹp
Đại hoàng

1
Điều này có nên làm việc với ( .p12)? Tôi nhận đượcjava.io.IOException: Invalid keystore format
IgniteCoders

Điều này không hoạt động với cửa hàng chứng chỉ P12 (tháng 3 năm 2019, phiên bản KeyTool mới nhất)
Harald Coppoolse

29

Bạn cũng có thể sử dụng opensslđể thực hiện điều tương tự:

$ 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
Chỉ cần nói rằng nó cũng hoạt động cho các tệp .p12. Rất hữu ích, cảm ơn!
Rich Ross

@PhilipRego chắc chắn rằng bạn có thể, chỉ cần gói chúng trong dấu ngoặc kép.
slm

Tôi muốn xem bí danh hay còn gọi là tên thân thiện. Phải sử dụng "openssl pkcs12 -nodes -in </path/to/file.pfx> -passin pass: <pfx's password>"
Domo

4

Bạn có thể liệt kê các mục nhập (chi tiết chứng chỉ) bằng keytool và thậm chí bạn không cần phải đề cập đến loại cửa hàng.

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

Vui lòng xem xét giải thích mã của bạn và nó sẽ giúp ích như thế nào, để những người khác có thể được hưởng lợi từ điều này.
Amit Verma

Đã cập nhật câu trả lời.
harry

2

Điều còn thiếu trong câu hỏi và tất cả các câu trả lời là bạn có thể cần cụm mật khẩu để đọc dữ liệu công khai từ kho khóa PKCS # 12 (.pfx). Nếu bạn cần một cụm mật khẩu hay không phụ thuộc vào cách tệp PKCS # 12 được tạo. Bạn có thể kiểm tra cấu trúc ASN1 của tệp (bằng cách chạy nó thông qua trình phân tích cú pháp ASN1, openssl hoặc certutil cũng có thể thực hiện điều này), nếu dữ liệu PKCS # 7 (ví dụ: tiền tố OID 1.2.840.113549.1.7) được liệt kê là 'được mã hóa' hoặc với một thông số kỹ thuật hoặc nếu vị trí của dữ liệu trong cây asn1 nằm bên dưới một nút được mã hóa, bạn sẽ không thể đọc nó nếu không biết về cụm mật khẩu. Nó có nghĩa là lệnh 'openssl pkcs12' của bạn sẽ không thành công với lỗi (đầu ra phụ thuộc vào phiên bản). Đối với những người thắc mắc tại sao bạn có thể quan tâm đến chứng chỉ PKCS # 12 mà không biết về cụm mật khẩu. Hãy tưởng tượng bạn có nhiều kho khóa và nhiều cụm từ và bạn thực sự tệ trong việc giữ chúng có tổ chức và bạn không muốn kiểm tra tất cả các tổ hợp, chứng chỉ bên trong tệp có thể giúp bạn tìm ra mật khẩu đó có thể là. Hoặc bạn đang phát triển phần mềm để di chuyển / gia hạn kho khóa và bạn cần quyết định trước quy trình nào sẽ bắt đầu dựa trên chứng chỉ có sẵn mà không có sự tương tác của người dùng. Vì vậy, các ví dụ sau hoạt động mà không cần cụm mật khẩu tùy thuộc vào cấu trúc PKCS # 12. Hoặc bạn đang phát triển phần mềm để di chuyển / gia hạn kho khóa và bạn cần quyết định trước quy trình nào sẽ bắt đầu dựa trên chứng chỉ có sẵn mà không có sự tương tác của người dùng. Vì vậy, các ví dụ sau hoạt động mà không cần cụm mật khẩu tùy thuộc vào cấu trúc PKCS # 12. Hoặc bạn đang phát triển phần mềm để di chuyển / gia hạn kho khóa và bạn cần quyết định trước quy trình nào sẽ bắt đầu dựa trên chứng chỉ có sẵn mà không có sự tương tác của người dùng. Vì vậy, các ví dụ sau hoạt động mà không cần cụm mật khẩu tùy thuộc vào cấu trúc PKCS # 12.

Tôi chỉ muốn nói thêm rằng, vì tôi không tự tìm ra câu trả lời và mất nhiều thời gian để tìm ra nó.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.