Я хотел перечислить сертификаты, хранящиеся в хранилище ключей 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
В вопросе и во всех ответах отсутствует то, что вам может понадобиться кодовая фраза для чтения общедоступных данных из хранилища ключей 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.
Просто хотел добавить это, потому что сам не нашел ответа и потратил много времени, чтобы разобраться.
openssl pkcs12 -info -in keystore_file