Verifique o formato da server.key. Eu apenas assumi que era RSA. Mas ler a primeira linha do arquivo provavelmente lhe dirá isso.
maxwellb
10
Apenas um aviso que cat server.crt server.key > server.pemnão colocará o comentário aberto em sua própria linha, o que parece ser um requisito. Correio de correio me deu um inferno e levei horas para descobrir o que estava errado.
Graham Walters
1
Obrigado Graham. Diferentes ferramentas geram os arquivos de maneira diferente e, por fim, algumas verificações são boas. Quando eu executei essas etapas, os arquivos terminaram com uma nova linha, por exemplo.
maxwellb
A dica sobre concatenar os arquivos .crt e .key juntos foi muito útil. Eu queria usar meu certificado com stunnel3, mas ele não tinha como especificar o arquivo de chave. Usando a concatenação funcionou. (Na verdade, como stunnel3 é um programa Perl, eu mesmo adicionei uma opção para ler o arquivo-chave. No entanto, como vi mais tarde a concatenação funcionar, reverti o stunnel3 para o código original.)
LS
2
Apenas uma ressalva em dizer que o gato server.crt server.key > server.includesprivatekey.pemé útil para SSL com haproxy 1.5.
precisa saber é o seguinte
224
Eu precisava fazer isso para um AWS ELB. Depois de ser espancado pelo diálogo várias vezes, finalmente foi isso que funcionou para mim:
Com a AWS, não esqueça de acrescentar o nome do arquivo file://. Assim, parecerá:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
FloatingRock
1
O segundo comando não faz nada se sua entrada é um arquivo pem, supondo que seja, você só precisa do primeiro comando
Kristofer
Impressionante! Isso funcionou bem para mim! Acabei de converter meus arquivos .key e .crt para .pem usando suas linhas de código e, em seguida, carreguei (copiar / colar) via console da AWS. Obrigado!
Diego D
79
Um pemarquivo contém o certificado e a chave privada. Depende do formato em que seu certificado / chave está, mas provavelmente é tão simples quanto isto:
Se você deseja um arquivo que comece com -----BEGIN RSA PRIVATE KEY-----e comece com -----BEGIN ENCRYPTED PRIVATE KEY-----, este é o comando que você deseja usar.
O que observei é: se você usa o openssl para gerar certificados, ele captura a parte do texto e a parte do certificado base64 no arquivo crt. O formato estrito do pem diz ( definição da wiki ) que o arquivo deve começar e terminar com BEGIN e END.
.pem - Certificado DER codificado em Base64, entre "----- COMEÇAR CERTIFICADO -----" e "----- TERMINAR CERTIFICADO -----"
Portanto, para algumas bibliotecas (eu encontrei isso em java) que esperam um formato estrito de pem, o crt gerado falharia na validação como um 'formato de pem inválido'.
Mesmo se você copiar ou grep as linhas com BEGIN / END CERTIFICATE e colá-lo em um arquivo cert.pem, ele deverá funcionar.
Aqui está o que eu faço, não muito limpo, mas funciona para mim, basicamente ele filtra o texto a partir da linha BEGIN:
outra opção é simplesmente passar o certificado não estrito openssl x509. Ele emitirá um certificado PEM válido: cat certificate.crt | openssl x509 > certificate.pem
T0xicCode 17/07/2013
Se você deseja obter tudo, desde "INICIAR" até o final do arquivo, esse é um trabalho para sed. Especificamente, você deseja algo como sed -n '/--BEGIN/,$p' cert.crtneste caso. Para explicar isso: o "-n" diz ao sed para não imprimir nada por padrão e a expressão range /--BEGIN/,$faz com que o pcomando (print) se aplique às linhas entre a primeira linha que contém --BEGINe o final do arquivo ( $).
precisa saber é o seguinte
4
Eu estava tentando ir do godaddy para o app engine. O que o truque foi usar nesta linha:
exatamente como está, exceto que, em vez de privateKey.key, usei name.unencrypted.priv.key e, em vez de www_mydomain_com.crt, usei name.crt
Em seguida, carreguei o public.pem no console administrativo para o "certificado X.509 codificado pelo PEM" e carreguei o private.pem para a "chave privada RSA codificada pelo PEM não criptografada".
Ao tentar fazer o upload de um certificado do GoDaddy para a AWS, falhei várias vezes, mas no final foi bem simples. Não há necessidade de converter nada para .pem. Você só precisa incluir o certificado do pacote GoDaddy no parâmetro chain, por exemplo,
Isso não funcionou para mim #An error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Adam Raudonis
4
Faça o download do certificado do portal provisório por appleId,
Exportar certificado do conjunto de chaves e nome (Certificates.p12),
Abra o terminal e vá para a pasta onde você salva acima do arquivo Certificates.p12,
Execute os comandos abaixo:
a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes ,
b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
.pem
em.crt
e.key
.Respostas:
Suas chaves já podem estar no formato PEM, mas apenas nomeadas com .crt ou .key.
Se o conteúdo do arquivo começar com
-----BEGIN
e você puder lê-lo em um editor de texto:O arquivo usa base64, que é legível em ASCII, não no formato binário. O certificado já está no formato PEM. Basta alterar a extensão para .pem.
Se o arquivo estiver em binário:
Para o server.crt, você usaria
Para server.key, use
openssl rsa
no lugar deopenssl x509
.A server.key provavelmente é sua chave privada e o arquivo .crt é o certificado x509 retornado e assinado.
Se for para um servidor Web e você não puder especificar o carregamento de uma chave pública e privada separada:
Pode ser necessário concatenar os dois arquivos. Para este uso:
Eu recomendaria nomear arquivos com "includesprivatekey" para ajudá-lo a gerenciar as permissões que você mantém com esse arquivo.
fonte
cat server.crt server.key > server.pem
não colocará o comentário aberto em sua própria linha, o que parece ser um requisito. Correio de correio me deu um inferno e levei horas para descobrir o que estava errado.server.crt server.key > server.includesprivatekey.pem
é útil para SSL com haproxy 1.5.Eu precisava fazer isso para um AWS ELB. Depois de ser espancado pelo diálogo várias vezes, finalmente foi isso que funcionou para mim:
Obrigado NCZ
Edit: Como diz @floatingrock
Com a AWS, não esqueça de acrescentar o nome do arquivo
file://
. Então será parecido com:http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html
fonte
file://
. Assim, parecerá:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
Um
pem
arquivo contém o certificado e a chave privada. Depende do formato em que seu certificado / chave está, mas provavelmente é tão simples quanto isto:fonte
-bash: server.key.pem: Permission denied
Além disso, se você não quiser solicitar uma senha, precisará executar o seguinte comando:
fonte
-----BEGIN RSA PRIVATE KEY-----
e comece com-----BEGIN ENCRYPTED PRIVATE KEY-----
, este é o comando que você deseja usar.esta é a melhor opção para criar arquivo .pem
fonte
O que observei é: se você usa o openssl para gerar certificados, ele captura a parte do texto e a parte do certificado base64 no arquivo crt. O formato estrito do pem diz ( definição da wiki ) que o arquivo deve começar e terminar com BEGIN e END.
Portanto, para algumas bibliotecas (eu encontrei isso em java) que esperam um formato estrito de pem, o crt gerado falharia na validação como um 'formato de pem inválido'.
Mesmo se você copiar ou grep as linhas com BEGIN / END CERTIFICATE e colá-lo em um arquivo cert.pem, ele deverá funcionar.
Aqui está o que eu faço, não muito limpo, mas funciona para mim, basicamente ele filtra o texto a partir da linha BEGIN:
fonte
openssl x509
. Ele emitirá um certificado PEM válido:cat certificate.crt | openssl x509 > certificate.pem
sed -n '/--BEGIN/,$p' cert.crt
neste caso. Para explicar isso: o "-n" diz ao sed para não imprimir nada por padrão e a expressão range/--BEGIN/,$
faz com que op
comando (print) se aplique às linhas entre a primeira linha que contém--BEGIN
e o final do arquivo ($
).Eu estava tentando ir do godaddy para o app engine. O que o truque foi usar nesta linha:
Exatamente como está, mas substituindo o nome pelo meu nome de domínio (não que isso realmente importasse)
E respondi a todas as perguntas referentes ao nome / organização comum como www.name.com
Então eu abri o csr, copiei, colei em go daddy, depois baixei, descompactei, naveguei até a pasta descompactada com o terminal e digitei:
Em seguida, usei estas instruções de Problemas com o SSL do domínio personalizado do Google Apps , que eram:
exatamente como está, exceto que, em vez de privateKey.key, usei name.unencrypted.priv.key e, em vez de www_mydomain_com.crt, usei name.crt
Em seguida, carreguei o public.pem no console administrativo para o "certificado X.509 codificado pelo PEM" e carreguei o private.pem para a "chave privada RSA codificada pelo PEM não criptografada".
.. E isso finalmente funcionou.
fonte
Ao tentar fazer o upload de um certificado do GoDaddy para a AWS, falhei várias vezes, mas no final foi bem simples. Não há necessidade de converter nada para .pem. Você só precisa incluir o certificado do pacote GoDaddy no parâmetro chain, por exemplo,
E para excluir seu upload com falha anterior, você pode fazer
fonte
An error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Execute os comandos abaixo:
a)
openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,b)
openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
fonte
fonte