Eu estou tentando usar o OpenSSL para converter um arquivo PEM e chave privada RSA para um arquivo PFX. Aqui está o comando de exemplo que eu tentei usar:
openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem
Ao fazer isso, recebo a seguinte mensagem de erro:
unable to load private key
9068:error:0906D06C:PEM routines:PEM_read_bio:no start
line:pem_lib.c:696:Expecting: ANY PRIVATE KEY
O arquivo cert é assim:
-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----
e a chave privada se parece com isso:
-----BEGIN RSA PRIVATE KEY-----
....
-----END RSA PRIVATE KEY-----
Eu investiguei o erro, mas ainda não encontrei uma solução.
EDITAR
Depois de algumas pesquisas adicionais, parece ser um problema com diferentes versões do openssl.
Se eu executar no meu sistema OSX que está executando 0.9.8zh 14 de janeiro de 2016, estas instruções funcionam bem.
No entanto, se eu executá-lo em uma máquina Windows com a versão OpenSSL 1.0.1p 9 de julho de 2015 e OpenSSL 1.1.0g 2 de novembro de 2017, obtenho os erros acima.
openssl rsa -in <private key filename> -noout -text
mostrar detalhes da chave ou um erro? Talvez o arquivo da chave privada esteja corrompido? Se funcionar, converta-a em uma chave privada PKCS # 8 comopenssl pkcs8 -in <private key file> -topk8 -nocrypt -out <new private key file>
e tente gerar um PKCS # 12 com isso.Respostas:
Depois de algumas descobertas, descobri que foram os scripts do Powershell que geraram os arquivos chave e cert.
Usando o Notepad ++ no Windows e o Tex-Edit Plus no OSX para identificar caracteres ocultos, descobri que os arquivos tinham [cr] extras no final.
Usando o comando
São boas verificações para a validade dos arquivos
Como minha origem era codificada em base64, acabei usando o comando certutil no Windows (por exemplo)
no windows para gerar os arquivos. Depois que os arquivos estavam corretos, o comando OpenSSL acima funcionou conforme o esperado.
fonte