O formato padrão do openssl pkcs8 dá a chave privada RSA

7

Estou executando este comando no meu pc (versão Openssl: 1.0.1):

openssl pkcs8 -inform DER -in file.key -passin pass:12345678a -outform PEM -out key.pem

e eu tenho esse key.pem:

-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANCFPVXwO+6qQdOs
...
wVauPfh0cGEf1Kc=
-----END PRIVATE KEY-----

Mas quando eu executo o mesmo comando do meu servidor (versão Openssl: 0.9.8e-fips-rhel5) eu recebo esta saída:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDQhT1V8DvuqkHTrMPFUUAXUl0ihDGoiD86SqK8Z3n19yp1VrJf
...
zHY0343VXnpM2opKwG2E1zgfHfbcLMFWrj34dHBhH9Sn
-----END RSA PRIVATE KEY-----

O interior Base64 é diferente e também os cabeçalhos:

-----BEGIN PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----

O primeiro funciona para mim, como posso obter a saída ----- BEGIN PRIVATE KEY ----- na versão 0.9.8?

Encontrei isso nas notas do patch do OpenSsl:

Change default private key format to PKCS#8.

então, essa poderia ser a questão principal, espero que alguém possa me ajudar com isso, eu não encontro o caminho para pegar a chave privada, mas não a chave BEGIN RSA PRIVATE KEY.

Obrigado

    
por Logan 11.06.2013 / 02:16

1 resposta

21

Faça openssl pkcs8 -topk8 para converter uma chave privada do formato tradicional para o formato pkcs # 8.

Este formato

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

é referido como "formato SSLeay" ou "formato tradicional" para chave privada.

Não sei qual é o formato da sua chave, por isso demonstrarei a ideia com uma chave privada gerada por genrsa . Quando você faz genrsa no OpenSSL 0.9.8x, a chave gerada está no formato tradicional. Ou seja, depois de

openssl genrsa -out file.key 1024

você receberá uma chave rsa no formato tradicional

-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQC3TyaSzsJO92/Ahq5rxRI1T0JSC0iF...
-----END RSA PRIVATE KEY-----

Em seguida, faça pkcs8 com -topk8 para converter essa chave do formato tradicional para o formato pkcs # 8.

openssl pkcs8 -topk8 -inform pem -in file.key -outform pem -nocrypt -out file.pem

Veja o que você receberá:

-----BEGIN PRIVATE KEY-----
MIICdQIBADANBgkqhkiG9w0BA...
-----END PRIVATE KEY-----

Todos os itens acima são feitos com o OpenSSL 0.9.8x. Ele informa como gerar a chave de formato PKCS # 8 a partir da chave de formato tradicional. Por outro lado, você sempre pode executar isso no OpenSSL 1.0.1 para tornar a chave compatível com a versão anterior:

openssl rsa -in file.pem -text > key.pem
    
por 11.06.2013 / 12:51

Tags