Pergunta

Como posso criar um arquivo PEM de um certificado SSL?

Estes são os arquivos que eu tenho disponível:

  • .crt
  • server.csr
  • server.key
Foi útil?

Solução

As chaves já pode estar no formato PEM, mas acaba de ser nomeada com .crt ou .key.

Se o conteúdo do arquivo começa com -----BEGIN e você pode lê-lo em um editor de texto:

O base64 usos de arquivo, que pode ser lido em ASCII, não formato binário. O certificado já está no formato PEM. Basta alterar a extensão para .pem.

Se o arquivo é em binário:

Para o server.crt, você usaria

openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem

Para server.key, o uso openssl rsa no lugar de openssl x509.

O server.key é provável a sua chave privada, eo arquivo .crt é o retornou, assinado, certificado x509.

Se isto é para um servidor Web e não é possível especificar o carregamento de uma chave privada e pública separada:

Você pode precisar concatenar os dois arquivos. Para este uso:

cat server.crt server.key > server.includesprivatekey.pem

Eu recomendaria nomear arquivos com "includesprivatekey" para ajudar a gerenciar as permissões que você mantém com este arquivo.

Outras dicas

Eu precisava fazer isso para um AWS ELB. Depois de ser espancado pelos diálogo muitas vezes, finalmente, isto é o que funcionou para mim:

openssl rsa -in server.key -text > private.pem
openssl x509 -inform PEM -in server.crt > public.pem

Graças NCZ

Edit: Como @floatingrock diz

Com a AWS, não se esqueça de prefixar o nome do arquivo com file://. Então, ele vai olhar como:

 aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://path/to/server.crt --private-key file://path/to/private.key --path /cloudfront/static/

http://docs.aws. amazon.com/cli/latest/reference/iam/upload-server-certificate.html

Um arquivo pem contém o certificado ea chave privada. Depende do formato de seu certificado / chave está, mas provavelmente é tão simples como isto:

cat server.crt server.key > server.pem

Além disso, se você não quer que ele pedir uma senha, então precisa executar o seguinte comando:

openssl rsa -in server.key -out server.key

Esta é a melhor opção para criar arquivo .pem

openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts

O que tenho observado é: se você usar openssl para gerar certificados, que capta tanto a parte do texto ea parte certificado base64 no arquivo CRT. O formato pem estrita diz ( wiki definição) que o arquivo deve começar e terminar com BEGIN e END.

.pem - (Privacy Enhanced Mail) Base64 codificado DER certificado, fechado entre "----- BEGIN CERTIFICATE -----" e "----- END CERTIFICADO ----- "

Assim, para algumas bibliotecas (eu encontrei isso em java) que esperam estrita formato pem, o CRT gerado iria falhar a validação como um 'formato pem inválida'.

Mesmo se você copiar ou grep as linhas com BEGIN / CERTIFICADO END, e colá-lo em um arquivo cert.pem, ele deve funcionar.

Aqui está o que eu faço, não muito limpo, mas funciona para mim, basicamente, ele filtra o texto a partir de BEGIN linha:

grep -A 1000 BEGIN cert.crt> cert.pem

Eu estava tentando ir de godaddy para app engine. O que fez o truque estava usando esta linha:

openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr

Exatamente como é, mas substituindo o nome com o meu nome de domínio (não que realmente importava mesmo)

E eu respondi a todas as perguntas relativas a nome comum / organização como www.name.com

Então eu abri a RSE, algo copiado, colado no paizinho vai, então o download, descompactá-lo, navegou para a pasta descompactada com o terminal e entrou:

cat otherfilegodaddygivesyou.crt gd_bundle-g2-g1.crt > name.crt

Então eu usei estas instruções de com o Google Apps personalizado SSL Domain , que foram:

openssl rsa -in privateKey.key -text > private.pem
openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem

exatamente como é, exceto em vez de privateKey.key eu usei name.unencrypted.priv.key, e em vez de www_mydomain_com.crt, eu usei name.crt

Então eu carregou o public.pem para o console de administração para o "PEM codificado X.509 certificado", e carregou o private.pem para o "Unencrypted PEM codificado chave privada RSA" ..

.. E que finalmente funcionou.

Tentando fazer upload de um certificado GoDaddy a AWS eu falhei várias vezes, mas no final, foi bastante simples. Não há necessidade de converter qualquer coisa para .pem. Você apenas tem que se esqueça de incluir o certificado pacote GoDaddy no parâmetro de cadeia, por exemplo.

aws iam upload-server-certificate
    --server-certificate-name mycert
    --certificate-body file://try2/40271b1b25236fd1.crt
    --private-key file://server.key
    --path /cloudfront/production/
    --certificate-chain file://try2/gdig2_bundle.crt

E para apagar seu upload falha anterior, você pode fazer

aws iam delete-server-certificate --server-certificate-name mypreviouscert
  1. Transferir certificado de portal provisória pela ID da Apple,
  2. Exportar certificado de chaveiro e nome dá (Certificates.p12),
  3. Abra o terminal e Goto pasta onde você salvar acima arquivo Certificates.p12,
  4. Executar abaixo comandos:

    a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes,

    b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts

  5. Seu arquivo .pem pronto "pushcert.pem".
  • Abra o terminal.
  • Vá para a pasta onde o certificado está localizado.
  • Execute o comando abaixo, substituindo nome com o seu certificado.

openssl pkcs12 -in YOUR_CERTIFICATE.p12 out YOUR_CERTIFICATE.pem -nodes -clcerts

  • A esperança que vai funcionar !!
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top