Eu queria listar os certificados armazenados em um keystore PKCS12.
O keystore tem a extensão .pfx
Eu queria listar os certificados armazenados em um keystore PKCS12.
O keystore tem a extensão .pfx
Respostas:
Se o armazenamento de chaves for do tipo PKCS12 ( .pfx
), você deve especificá-lo com -storetype PKCS12
(quebras de linha adicionadas para facilitar a leitura):
keytool -list -v -keystore <path to keystore.pfx> \
-storepass <password> \
-storetype PKCS12
.p12
)? Eu recebojava.io.IOException: Invalid keystore format
Você também pode usar openssl
para realizar a mesma coisa:
$ 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
Você pode listar as entradas (detalhes de certificados) com o keytool e até mesmo não precisa mencionar o tipo de loja.
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
O que está faltando na pergunta e em todas as respostas é que você pode precisar da senha para ler dados públicos do armazenamento de chaves PKCS # 12 (.pfx). Se você precisa de uma senha longa ou não, depende de como o arquivo PKCS # 12 foi criado. Você pode verificar a estrutura ASN1 do arquivo (executando-o por meio de um analisador ASN1, openssl ou certutil podem fazer isso também), se os dados PKCS # 7 (por exemplo, prefixo OID 1.2.840.113549.1.7) estiverem listados como 'criptografados' ou com uma cipher-spec ou se a localização dos dados na árvore asn1 estiver abaixo de um nó criptografado, você não será capaz de lê-lo sem o conhecimento da senha. Isso significa que seu comando 'openssl pkcs12' falhará com erros (a saída depende da versão). Para aqueles que estão se perguntando por que você pode estar interessado no certificado de um PKCS # 12 sem conhecer a senha. Imagine que você tem muitos keystores e muitas frases de fase e é muito ruim em mantê-los organizados e não quer testar todas as combinações, o certificado dentro do arquivo pode ajudá-lo a descobrir qual é a senha. Ou você está desenvolvendo um software para migrar / renovar um armazenamento de chaves e precisa decidir com antecedência qual procedimento iniciar com base no certificado contido, sem interação do usuário. Portanto, os últimos exemplos funcionam sem senha, dependendo da estrutura do PKCS # 12. Ou você está desenvolvendo um software para migrar / renovar um armazenamento de chaves e precisa decidir com antecedência qual procedimento iniciar com base no certificado contido, sem interação do usuário. Portanto, os últimos exemplos funcionam sem senha, dependendo da estrutura do PKCS # 12. Ou você está desenvolvendo um software para migrar / renovar um armazenamento de chaves e precisa decidir com antecedência qual procedimento iniciar com base no certificado contido, sem interação do usuário. Portanto, os últimos exemplos funcionam sem senha, dependendo da estrutura do PKCS # 12.
Só queria acrescentar isso, porque eu mesmo não encontrei uma resposta e gastei muito tempo para descobrir.
openssl pkcs12 -info -in keystore_file