Converta .pem em .crt e .key

Respostas:

500

Eu era capaz de converter pem para crt usando este:

openssl x509 -outform der -in your-cert.pem -out your-cert.crt
CB
fonte
13
Usar um editor de texto não é a melhor abordagem. Para extrair a chave no formato PKCS8: 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
Andron
131
Eu tentei o seu comando, mas eu tinha: #unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Damien Carol
15
o comando key (openssl pkey -em mumble.pem -out mumble-key.pem) fornece isso: não é possível carregar a chave 129051320116880: erro: 0906D06C: rotinas PEM: PEM_read_bio: sem linha de partida: pem_lib.c: 703: Esperando: ANY
Chave
2
openssl rsa -in your-cert.pem -outform pem out your-key.pem
troyfolger
3
@Andron pkey e rsa me dão Expecting: ANY PRIVATE KEYerro.
Aero Wang
394

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
    
sempre-verde
fonte
32
Ainda assim, isso não responde à pergunta de como obter a chave privada do certificado binário (exportado).
precisa saber é o seguinte
obrigado, querendo saber se eu tenho um PEM contendo uma chave privada e certificados, como posso obter apenas certificados? Eu sei que posso copiar a parte certificados a partir dele usando editor de texto, mas eu quero saber se existe qualquer comando openssl, graças
workplaylifecycle
46

Para extrair a chave e o certificado de um arquivo pem:

Extrair chave

openssl pkey -in foo.pem -out foo.key

Outro método de extrair a chave ...

openssl rsa -in foo.pem -out foo.key

Extraia todos os materiais, incluindo a corrente CA

openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert

Extrair o primeiro certificado textualmente como DER

openssl x509 -in foo.pem -outform DER -out first-cert.der
Rodovia da Vida
fonte
7
openssl x509 -formulário der -in C: \ Users \ Greg \ .ssh \ e360_stork_listener.pem -out C: \ Users \ Greg \ .ssh \ e360_stork_listener.crt não pode carregar o certificado 4294956672: erro: 0906D06C: rotinas PEM: PEM_read_bio: nenhuma linha de partida: pem_lib.c: 708: Esperando: CERTIFICADO DE
CONFIANÇA
5

0. Pré - requisito : openssl deve ser instalado. No Windows, se Git Bashestiver instalado, tente isso! Binários alternativos podem ser encontrados aqui.

1. Extrair .keyde .pem:

openssl pkey -in cert.pem -out cert.key

2. Extrair .crtde .pem:

openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
Saikat
fonte
1

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
Gerard ONeill
fonte
0

Se você fez esta pergunta porque está usando mkcert, o truque é que o .pemarquivo é o certificado e o -key.pemarquivo é a chave.

(Você não precisa converter, basta executar mkcert yourdomain.dev otherdomain.dev)

Barney
fonte