Tôi muốn liệt kê các chứng chỉ được lưu trữ trong kho khóa PKCS12.
Kho khóa có phần mở rộng .pfx
Tôi muốn liệt kê các chứng chỉ được lưu trữ trong kho khóa PKCS12.
Kho khóa có phần mở rộng .pfx
Câu trả lời:
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
.p12
)? Tôi nhận đượcjava.io.IOException: Invalid keystore format
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
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
Đ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ó.
openssl pkcs12 -info -in keystore_file