Alguém pode me dizer a maneira / comando correto para extrair / converter os arquivos de certificado .crt
e chave privada .key
de um .pem
arquivo? Acabei de ler que eles são intercambiáveis, mas não como.
Alguém pode me dizer a maneira / comando correto para extrair / converter os arquivos de certificado .crt
e chave privada .key
de um .pem
arquivo? Acabei de ler que eles são intercambiáveis, mas não como.
Respostas:
Eu era capaz de converter pem para crt usando este:
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
openssl pkey -in mumble.pem -out mumble-key.pem
Se a versão do OpenSSL for anterior à 1.0.0, extraia a chave como uma chave RSA:openssl rsa -in mumble.pem -out mumble-key.pem
unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Expecting: ANY PRIVATE KEY
erro.
Convertendo usando OpenSSL
Esses comandos permitem converter certificados e chaves em diferentes formatos para torná-los compatíveis com tipos específicos de servidores ou software.
Converta um arquivo DER (.crt .cer .der) em PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
Converta um arquivo PEM para DER
openssl x509 -outform der -in certificate.pem -out certificate.der
Converta um arquivo PKCS # 12 (.pfx .p12) que contém uma chave privada e certificados em PEM
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
Converta um arquivo de certificado PEM e uma chave privada em PKCS # 12 (.pfx .p12)
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
Converter PEM para CRT (arquivo .CRT)
openssl x509 -outform der -in certificate.pem -out certificate.crt
OpenSSL Convert PEM
Converter PEM para DER
openssl x509 -outform der -in certificate.pem -out certificate.der
Conversão PEM para P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
Conversão PEM para PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
OpenSSL Convert DER
Conversão DER para PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL Convert P7B
Converter P7B para PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
Converter P7B para PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
OpenSSL Convert PFX
Conversão PFX para PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
Gere chaves rsa pelo OpenSSL
Usando o OpenSSL na linha de comando que você primeiro precisaria para gerar uma chave pública e privada, você deve proteger esse arquivo com senha usando o argumento -passout; existem muitas formas diferentes que esse argumento pode usar; consulte a documentação do OpenSSL sobre isso.
openssl genrsa -out private.pem 1024
Isso cria um arquivo de chave chamado private.pem que usa 1024 bits. Na verdade, esse arquivo possui as chaves pública e privada, portanto, você deve extrair a pública desse arquivo:
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
or
openssl rsa -in private.pem -pubout > public.pem
or
openssl rsa -in private.pem -pubout -out public.pem
Agora você terá public.pem contendo apenas sua chave pública. Você pode compartilhá-lo livremente com terceiros. Você pode testar tudo apenas criptografando algo usando sua chave pública e depois descriptografando usando sua chave privada. Primeiro, precisamos de um pouco de dados para criptografar:
Arquivo de exemplo:
echo 'too many secrets' > file.txt
Agora você tem alguns dados em file.txt, vamos criptografá-los usando o OpenSSL e a chave pública:
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
Isso cria uma versão criptografada do arquivo.txt, chamando-o de arquivo.ssl, se você olhar para esse arquivo, é apenas lixo binário, nada muito útil para ninguém. Agora você pode descriptografá-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 decrypted.txt:
cat decrypted.txt
|output -> too many secrets
Opções do RSA TOOLS no OpenSSL
NOME
rsa - ferramenta de processamento de chaves RSA
SINOPSE
openssl rsa | aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [ID do mecanismo]
DESCRIÇÃO
O comando rsa processa chaves RSA. Eles podem ser convertidos entre vários formulários e seus componentes impressos. Observe que este comando usa o formato compatível tradicional SSLeay para criptografia de chave privada: aplicativos mais recentes devem usar o formato PKCS # 8 mais seguro usando o utilitário pkcs8.
OPÇÕES DE COMANDO
-help
Imprima uma mensagem de uso.
-inform DER|NET|PEM
Isso especifica o formato de entrada. A opção DER usa um formulário codificado em ASN1 DER compatível com o formato PKCS # 1 RSAPrivateKey ou SubjectPublicKeyInfo. O formato PEM é o formato padrão: consiste no formato DER base64 codificado com linhas adicionais de cabeçalho e rodapé. Na entrada, chaves privadas no formato PKCS # 8 também são aceitas. O formulário NET é um formato descrito na seção NOTAS.
-outform DER|NET|PEM
Isso especifica o formato de saída, as opções têm o mesmo significado que a opção -inform.
-in filename
Isso especifica o nome do arquivo de entrada para ler uma chave ou a entrada padrão, se esta opção não for especificada. Se a chave estiver criptografada, uma frase secreta será solicitada.
-passin arg
a fonte da senha do arquivo de entrada. Para obter mais informações sobre o formato de arg, consulte a seção PASS PHRASE ARGUMENTS em openssl.
-out filename
Isso especifica o nome do arquivo de saída para o qual gravar uma chave ou a saída padrão, se esta opção não for especificada. Se alguma opção de criptografia estiver definida, será solicitada uma frase secreta. O nome do arquivo de saída não deve ser o mesmo que o nome do arquivo de entrada.
-passout password
a fonte da senha do arquivo de saída. Para obter mais informações sobre o formato de arg, consulte a seção PASS PHRASE ARGUMENTS em openssl.
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
Essas opções criptografam a chave privada com a cifra especificada antes de produzi-la. Uma frase secreta é solicitada. Se nenhuma dessas opções for especificada, a chave será escrita em texto sem formatação. Isso significa que o uso do utilitário rsa para ler uma chave criptografada sem opção de criptografia pode ser usado para remover a frase secreta de uma chave ou definindo as opções de criptografia que podem ser usadas para adicionar ou alterar a frase secreta. Essas opções podem ser usadas apenas com arquivos de saída no formato PEM.
-text
imprime os vários componentes de chave pública ou privada em texto sem formatação, além da versão codificada.
-noout
essa 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
essa opção verifica a consistência de uma chave privada RSA.
-pubin
por padrão, uma chave privada é lida no arquivo de entrada: com esta opção, uma chave pública é lida.
-pubout
por padrão, é emitida uma chave privada: com esta opção, será emitida uma chave pública. Esta opção é definida automaticamente se a entrada for uma chave pública.
-RSAPublicKey_in, -RSAPublicKey_out
como -pubin e -pubout, exceto o formato RSAPublicKey.
-engine id
especificar um mecanismo (por sua cadeia de identificação exclusiva) fará com que o rsa tente obter uma referência funcional para o mecanismo especificado, inicializando-o, se necessário. O mecanismo será definido como padrão para todos os algoritmos disponíveis.
NOTAS
O formato de chave privada do PEM usa as linhas de cabeçalho e rodapé:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
O formato de chave pública do PEM usa as linhas de cabeçalho e rodapé:
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
O formato PEM RSAPublicKey usa 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, que usa RC4 sem sal para sua criptografia. Não é muito seguro e, portanto, só deve ser usado quando necessário.
Algumas versões mais recentes do IIS possuem dados adicionais nos arquivos .key exportados. Para usá-los com o utilitário, visualize o arquivo com um editor binário e procure a sequência "chave privada" e, em seguida, rastreie de volta à sequência de bytes 0x30, 0x82 (esta é uma ASN1 SEQUENCE). Copie todos os dados deste ponto em diante para outro arquivo e use-os como entrada no utilitário rsa com a opção -inform NET.
EXEMPLOS
Para remover a frase secreta em uma chave privada RSA:
openssl rsa -in key.pem -out keyout.pem
Para criptografar 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 DER:
openssl rsa -in key.pem -outform DER -out keyout.der
Para imprimir os componentes de uma chave privada na saída padrão:
openssl rsa -in key.pem -text -noout
Para gerar apenas a parte pública de uma chave privada:
openssl rsa -in key.pem -pubout -out pubkey.pem
Saída da parte pública de uma chave privada no formato RSAPublicKey:
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
Para extrair a chave e o certificado 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
0. Pré - requisito : openssl
deve ser instalado. No Windows, se Git Bash
estiver instalado, tente isso! Binários alternativos podem ser encontrados aqui.
1. Extrair .key
de .pem
:
openssl pkey -in cert.pem -out cert.key
2. Extrair .crt
de .pem
:
openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
Um .crt armazena o certificado .. no formato pem. Portanto, um .pem, embora também possa ter outras coisas como um csr (solicitação de assinatura de certificado), uma chave privada, uma chave pública ou outros certificados, quando está armazenando apenas um certificado, é a mesma coisa que um .crt.
Um pem é um arquivo codificado na base 64 com um cabeçalho e um rodapé entre cada seção.
Para extrair uma seção específica, um script perl como o seguinte é totalmente válido, mas fique à vontade para usar alguns dos comandos openssl.
perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem
onde == 1 pode ser alterado para qualquer seção que você precisar. Obviamente, se você souber exatamente o cabeçalho e o rodapé necessários e houver apenas um no arquivo (geralmente o caso se você mantiver apenas o certificado e a chave), poderá simplificá-lo:
perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem