Como chegar arquivo .pem de .key e arquivos .CRT?
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
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
- Transferir certificado de portal provisória pela ID da Apple,
- Exportar certificado de chaveiro e nome dá (Certificates.p12),
- Abra o terminal e Goto pasta onde você salvar acima arquivo Certificates.p12,
-
Executar abaixo comandos:
a)
openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,b)
openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
- 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 !!