Alguém pode me dizer a maneira correta/comandante de extrair/converter os arquivos .crt' e chave privada
.key' de um arquivo `.pem'? Eu acabei de ler que eles são intercambiáveis, mas não como.
**Convertendo usando OpenSSL*** Estes comandos permitem converter certificados e chaves em diferentes formatos para torná-los compatíveis com tipos específicos de servidores ou software.
Converter um arquivo DER (.crt .cer .der) para PEM openssl x509 -inform der -in certificate.cer -out certificate.pem
Converter um arquivo PEM para DER openssl x509 -outform der -in certificate.pem -out certificate.der
Converter um arquivo PKCS#12 (.pfx .p12) contendo uma chave privada e certificados para PEM openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes Você pode adicionar -nocerts para emitir apenas a chave privada ou adicionar -nokeys para emitir apenas os certificados.
Converter um arquivo de certificado PEM e uma chave privada para PKCS#12 (.pfx .p12) openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
Converter PEM em CRT (arquivo CRT) openssl x509 -outform der -in certificate.pem -out certificate.crt **OpenSSL Converter PEM***
Converter PEM em DER openssl x509 -outform der -in certificate.pem -out certificate.der
Converter PEM em P7B openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
Converter PEM em PFX openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt **OpenSSL Converter DER***
Converter DER em PEM openssl x509 -inform der -in certificate.cer -out certificate.pem **OpenSSL Converter P7B***
Converter P7B em PEM openssl pkcs7 -impressão_certos -in certificate.p7b -out certificate.cer
Converter P7B em PFX openssl pkcs7 -impressão_certos -in certificate.p7b -out certificate.cer openssl pkcs12 -exportar -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer **OpenSSL Converter PFX***
Converter PFX em PEM openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes **Gerar chaves rsa por OpenSSL***
Usando OpenSSL na linha de comando você precisa primeiro gerar uma chave pública e privada, você deve proteger este arquivo usando o argumento -passout, há muitas formas diferentes que este argumento pode tomar, então consulte a documentação do OpenSSL sobre isso. openssl genrsa -out private.pem 1024
Isto cria um arquivo chave chamado private.pem que usa 1024 bits. Este ficheiro tem tanto a chave privada como a pública, por isso deve extrair a chave pública deste ficheiro: openssl rsa -in private.pem -out public.pem -outform PEM -pubout ou
openssl rsa -in private.pem -pubout > public.pem
ou
openssl rsa -in private.pem -pubout -out public.pem
Agora você terá public.pem contendo apenas sua chave pública, você pode compartilhar isto livremente com terceiros. Você pode testar tudo isso apenas criptografando algo você mesmo usando sua chave pública e depois decodificando usando sua chave privada, primeiro precisamos de um pouco de dados para criptografar:
Exemplo de ficheiro : echo ' demasiados segredos' > ficheiro.txt
Agora você tem alguns dados em file.txt, vamos criptografá-los usando OpenSSL e a chave pública: openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
Isto cria uma versão encriptada de file.txt chamando-lhe file.ssl, se você olha para este arquivo, é apenas lixo binário, nada muito útil para qualquer um. Agora podes desencriptá-lo usando a chave privada: openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
Agora você terá um arquivo não criptografado em decript.txt: gato descriptografado.txt |output -> demasiados segredos **RSA TOOLS Opções em OpenSSL***
**NOME***
rsa - ferramenta de processamento de chaves RSA
**SYNOPSIS***
openssl rsa [-help] [-informar PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256] [-camellia128] [- -camellia128] [-camélia192] [-camélia256] [-des] [-des3] [-idea] [-texto] [-noout] [-modulus] [-check] [-pubin] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine id]
**DESCRIÇÃO***
O comando rsa processa chaves RSA. Elas podem ser convertidas entre vários formulários e seus componentes impressos. Note que este comando usa o formato tradicional compatível com SSLeay para criptografia de chave privada: aplicações mais novas devem usar o formato mais seguro PKCS#8 usando o utilitário pkcs8.
**OPÇÕES DE COMANDO*** -help
Imprima uma mensagem de utilização. -informar DER|NET|PEM Isto especifica o formato de entrada. A opção DER usa um formulário codificado ASN1 DER compatível com o formato PKCS#1 RSAPrivateKey ou SubjectPublicKeyInfo. O formulário PEM é o formato padrão: consiste na base de formato DER64 codificada com linhas adicionais de cabeçalho e rodapé. No formato de entrada PKCS#8 as chaves privadas também são aceitas. O formulário NET é um formato descrito na seção NOTES. -outform DER|NET|PEM Isto especifica o formato de saída, as opções têm o mesmo significado que a opção -informar. -em nome de arquivo Isto especifica o nome do arquivo de entrada para ler uma chave de ou entrada padrão se esta opção não for especificada. Se a chave for criptografada, uma frase de passagem será solicitada. -passin arg a fonte da senha do arquivo de entrada. Para mais informações sobre o formato de arg, consulte a secção ARGUMENTOS DE PASSAGEM em openssl. -sem nome de arquivo Isto especifica o nome do arquivo de saída para escrever uma chave ou saída padrão, se esta opção não for especificada. Se alguma opção de encriptação for definida, então uma frase de passagem será solicitada. O nome do arquivo de saída não deve ser o mesmo que o nome do arquivo de entrada. -passout senha a fonte da senha do arquivo de saída. Para mais informações sobre o formato da arg, consulte a secção ARGUMENTOS DE PASSAGEM DE FÁBRICAS em openssl. -aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea Estas opções encriptam a chave privada com a cifra especificada antes de a emitir. É pedida uma frase de passagem. Se nenhuma destas opções for especificada, a chave é escrita em texto simples. Isto significa que usando o utilitário rsa para ler em uma chave criptografada sem opção de criptografia pode ser usado para remover a frase pass de uma chave, ou definindo as opções de criptografia que podem ser usadas para adicionar ou alterar a frase pass. Essas opções só podem ser usadas com arquivos de saída em formato PEM. -texto imprime os vários componentes chave públicos ou privados em texto simples, além da versão codificada. -noout esta opção impede a saída da versão codificada da chave. -modulus esta opção imprime o valor do módulo da chave. -check esta opção verifica a consistência de uma chave privada da RSA. -pubin por padrão uma chave privada é lida do arquivo de entrada: com esta opção uma chave pública é lida em seu lugar. -pubout por padrão uma chave privada é emitida: com esta opção uma chave pública será emitida em seu lugar. Esta opção é automaticamente definida se a entrada for uma chave pública. -RSAPublicKey_in, -RSAPublicKey_out como -pubin e -pubout exceto o formato RSAPublicKey é usado em seu lugar. -identificação do motor a especificação de um motor (pela sua única string de id) fará com que a rsa tente obter uma referência funcional para o motor especificado, inicializando-o assim, se necessário. O motor será então definido como o padrão para todos os algoritmos disponíveis.
NOTAS*** O formato da chave privada PEM utiliza as linhas de cabeçalho e rodapé: -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- O formato de chave pública PEM utiliza as linhas de cabeçalho e rodapé: -----BEGIN CHAVE PÚBLICA----- -----END PUBLIC KEY----- O formato PEM RSAPublicKey utiliza as linhas de cabeçalho e rodapé: -----BEGIN RSA PUBLIC KEY----- -----END RSA PUBLIC KEY-----
O formulário NET é um formato compatível com servidores Netscape mais antigos e arquivos .key do Microsoft IIS, este utiliza RC4 sem sal para sua criptografia. Ele não é muito seguro e por isso só deve ser usado quando necessário. Algumas versões mais recentes do IIS têm dados adicionais nos ficheiros .key exportados. Para utilizá-los com o utilitário, veja o ficheiro com um editor binário e procure a string "private-key" depois siga para a sequência de bytes 0x30, 0x82 (esta é uma SEQUÊNCIA ASN1). Copie todos os dados a partir deste ponto para outro arquivo e use isso como entrada para o utilitário rsa com a opção -informar NET. **EXAMPLES*** Para remover a frase de passe de uma chave privada da RSA: openssl rsa -in key.pem -out keyout.pem Para encriptar uma chave privada usando o DES triplo: openssl rsa -in key.pem -des3 -out keyout.pem Para converter uma chave privada do formato PEM para o formato DER: openssl rsa -in key.pem -outform DER -out keyout.der Para imprimir os componentes de uma chave privada para a saída padrão: openssl rsa -in key.pem -text -noout Para apenas produzir a parte pública de uma chave privada: openssl rsa -in key.pem -pubout -out pubkey.pem Produzir a parte pública de uma chave privada em formato RSAPublicKey: openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
Para extrair a chave e o cert de um arquivo pem:
openssl pkey -in foo.pem -out foo.key
Outro método de extrair a chave...
openssl rsa -in foo.pem -out foo.key
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
openssl x509 -in foo.pem -outform DER -out first-cert.der