Eu exportei um certificado+chave existente de um ASA 5510:
asa5510(config)# crypto ca export MYTRUSTSTORE pkcs12 MYPASSWORD
Salvei a saída em um arquivo (vpn-cisco.pkcs12) e agora estou tentando extrair o certificado e a chave em arquivos separados da seguinte forma:
openssl pkcs12 -in cisco-vpn.pkcs12 -nocerts -out privateKey.pem
O erro que recebo:
139708630054816:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319:
139708630054816:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=PKCS12
Mesmo erro se eu executar openssl pkcs12 -info ...
ou qualquer outro comando.
Tentei exportar o arquivo novamente e comparar usando ASDM em vez da CLI, mas o arquivo é exatamente o mesmo.
Pesquisando o erro apenas diz que a codificação do arquivo pode estar de alguma forma desativada, mas nenhum detalhe específico.
EDIT (7 anos depois): me deparei com o mesmo problema novamente, tendo que manter uma configuração ASA e Zimbra usando os mesmos certificados, e me deparei com minha própria pergunta como a resposta funcional.
Agradecimentos extras por todas as entradas adicionais, como a necessidade de limpar o arquivo p12 para linhas vazias, etc.
EDIT 2: A exportação PKCS12 do ASA criptografa a chave privada, o ZCS não está satisfeito com isso, então a senha precisa ser descartada, então primeiro extraia a chave:
openssl pkcs12 -in cisco-vpn.pkcs12.bin -nocerts -out privateKey.pem
E, em seguida, solte a senha:
openssl rsa -in privateKey.pem -out key_no_pass.txt
Isto é estranho. Eu tenho o mesmo problema e descobri que esta pergunta não tem resposta. Eu então fiz mais pesquisas e encontrei uma postagem no yaleman.org que diz que eles encontraram a resposta e vincularam a esta mesma pergunta . No entanto, não houve resposta aqui. Corrigindo isso retroativamente, apoio total para Yaleman.
Longo e curto: você precisa converter o pfx de Base64 para o formato binário do openssl.
Então você pode convertê-lo em um PEM e obter a chave ou certificado separadamente.
Se você tiver problemas com a decodificação, verifique seu arquivo e exclua todas as linhas em branco nele. Nosso ASA estava salvando-os com espaços em branco iniciais e o openssl não gosta disso.
Encontrei o mesmo problema, descobri que meu certificado era codificado em base64 dupla ...
Se você estiver fazendo isso no Windows, tente usar o exe openSSL localizado em
"C:\Program Files\Git\usr\bin\openssl.exe"
. Isso funcionou para mim, depois que originalmente recebi esse erro ao usar o openssl de uma sessão do Git bash. Usando o openSSL.exe
, fui solicitado a fornecer a senha .pfx, o que não acontecia anteriormente. (Eu também regenerei o .pfx original em um ponto, caso houvesse algum problema de corrupção).