“O certificado de chave pública e a chave privada não correspondem” ao usar o certificado emitido pelo Godaddy [fechado]

86

Estou tentando instalar um certificado GoDaddy SSL em um novo balanceador de carga que estou configurando no Amazon AWS. Eu originalmente criei o certificado em Godaddy usando o programa keytool para instalação direta em um servidor Glassfish 3.1 (Amazon linux ami). Não tive problemas para obter essa configuração diretamente no servidor. Agora preciso mover o certificado do servidor da web para o novo balanceador de carga. A Amazon exige que a chave privada e os certificados estejam no formato PEM, então usei a ferramenta "rekey" no GoDaddy para criar novos certificados. Quando eu os carrego na tela de configuração do balanceador de carga no AWS Mgmt Console, recebo a mensagem de erro: "O certificado de chave pública e a chave privada não correspondem".

Aqui está como estou criando as chaves:

$ openssl genrsa -des3 -out private.key 2048
$ openssl req -new -key private.key -out apps.mydomain.com.csr

Em seguida, envio o arquivo .csr para GoDaddy durante o processo de "recodificação". Assim que a recodificação for concluída, eu faço o download dos 2 certificados recém-criados (apps.mydomain.com.crt & gd_bundle.crt). Eu os baixa selecionando (Apache) como o tipo de servidor (também tentei "outro" e "Cpanel", mas todos parecem iguais).

Neste ponto, removo a criptografia do arquivo private.key usando o seguinte comando:

$ openssl rsa -in private.key -out private.pem

Neste ponto, eu volto para o console AWS Mgmt, crio o balanceador de carga, adiciono o redirecionamento de servidor seguro e coloco o conteúdo dos seguintes arquivos nos respectivos campos da tela onde ele pede para configurar o certificado SSL:

private.pem --> Private Key
apps.mydomain.com.crt --> Public Key Certificate
gd_bundle.crt --> Certificate Chain

Quando clico no botão "continuar", recebo o erro "Erro: O certificado da chave pública e a chave privada não correspondem".

-Existe uma maneira de testar se estou recebendo uma mensagem de erro válida da Amazon? Parece estranho para mim que as chaves não coincidam quando estou seguindo as instruções de GoDaddy com atenção.

Tentei criar o arquivo private.key sem criptografia RSA antes de criar o .csr e isso não parece fazer diferença.

Também estou presumindo que os arquivos .crt que estou baixando do GoDaddy estão no formato .PEM, mas não tenho certeza de como verificar isso.

Alguma ideia?

Felby
fonte
1
Stack Overflow é um site para questões de programação e desenvolvimento. Esta questão parece estar fora do tópico porque não é sobre programação ou desenvolvimento. Veja sobre quais tópicos posso perguntar aqui na Central de Ajuda. Talvez o Superusuário seja um lugar melhor para perguntar. Consulte também Onde postar perguntas sobre Dev Ops? .
jww 01 de
Este post tem mais de 3 anos, por que se preocupar em movê-lo agora?
Felby
1
Felby - as pessoas costumam dizer, "... mas veja este post e aquele post". Portanto, não é suficiente manter as novas postagens organizadas - temos que pelo menos receber uma mensagem nas postagens antigas também. E por que vale a pena, eu não; acho que é uma má pergunta. É apenas um pouco fora do assunto para Stack Overflow.
jww
@Felby, você deve considerar esta resposta para aceitação. É o que a maioria dos desenvolvedores está procurando quando esse problema surge com a AWS.
Noel Baron

Respostas:

61

Para mim, foi uma etapa fácil:

  1. Converta a chave privada em PEM:

    openssl rsa -in yourdomain.key -outform PEM

  2. Converta o certificado e o pacote de certificados em PEM :

    openssl x509 -inform PEM -in yourdomain.crt

    openssl x509 -inform PEM -in bundle.crt

Jonathon Hill
fonte
1
Esta resposta em particular realmente me ajudou. Obrigado Jonathan. Para fins de registro, seudominio.crt é a chave pública, o certificado que você obteve do seu provedor (também pode ser um .cer)
user_v
Continuo recebendo um erroWARNING: can't open config file: /etc/pki/tls/openssl.cnf
tq
2
@tq - alguns comandos OpenSSL também têm uma -configopção. Use-o para especificar o caminho para o arquivo de configuração que você está usando.
jww 01 de
@felby Deve marcar esta como a resposta aceita. Esta é a única resposta que não cria um problema de confiança SSL com dispositivos iOS.
Noel Baron
Esta resposta é realmente útil com SSL curinga. Você deve converter os arquivos domain.crt e gd_bundle.crt.
Ducle de
40

Apenas para registro e para qualquer outra pessoa que esteja tentando descobrir:

seudominio.key -> comando do terminal: sudo openssl rsa -in yourdomain.key -outform PEM -out yourdomain.pem -> chave privada

seudominio.crt -> chave pública

gd_bundle.crt -> cadeia de certificados

e você está pronto para ir :)

Chris J
fonte
2
OMG, perdi tantas horas com problema, você acabou de me salvar! Eu comprei um certificado RapidSSL: o truque era 1) converter a chave privada como você sugere aqui e 2) reverter a ordem dos certificados na cadeia de certificados fornecida pelo RapidSSL. Obrigado!
MiniQuark
fica me pedindo uma senha, mas meu cert rapidssl foi feito sem uma
tq
O comando sudo pedirá uma senha de administrador, a menos que sua conta esteja configurada para não exigir uma senha por meio de alguns métodos diferentes. É essa a senha que você está se referindo também?
Chris J
Para adicionar algo onde possa ser encontrado por alguém que precisa dele, obtivemos um certificado Host Gator de um cliente e parecia muito bem configurado - sem conversões de pem, e o pacote CA já estava concatenado. No entanto, não iria para a Amazon. Era a mesma coisa com a ordem dos certificados no pacote. Ao inverter a ordem, ele entrou e funcionou.
CargoMeister de
23

Parece que o problema era a maneira como eu estava copiando o conteúdo da chave e certificados para o console de gerenciamento da AWS. Eu estava usando um desktop Ubuntu rodando em Virtual Box em um desktop Windows 7; copie e cole os valores de uma tela do gedit no navegador em execução na caixa do Windows. Depois que abri os arquivos de chave e certificado na mesma caixa do navegador da web (Windows neste caso), os certificados funcionaram perfeitamente. Estou supondo que algumas partes do arquivo não estão sendo reproduzidas corretamente ao usar a prancheta compartilhada entre o cliente do Virtual Box e o host. Caso encerrado.

Felby
fonte
Você pode aceitar sua resposta para que as pessoas saibam que isso foi resolvido?
Phil Sturgeon
2
Estranho, pensei que já tinha aceitado isso há muito tempo ...
Felby
7

Encontramos uma solução alternativa para esse problema. Estávamos tendo os mesmos sintomas com o mesmo erro.

Em seguida, tentamos inserir novamente os códigos pem mais uma vez, mas desta vez garantimos que pressionamos enter uma vez e verificamos se o cursor estava em uma linha em branco no final de cada janela. Então nós o salvamos. FUNCIONOU.

Isso resolveu nosso problema, então pode resolver para outras pessoas.

PlateSpinner
fonte
1

Um pequeno pegadinha. Estou usando uma caixa do Windows (Win 7 Pro) e quando usei a porta do Windows do OpenSSL, os arquivos de saída tinham caracteres de fim de linha (LF) no estilo Unix.

Tive que converter o arquivo para o estilo do Windows (CRLF) para o upload da chave privada.

Christopher Stevenson
fonte
0

Posso sugerir uma solução alternativa e uma informação para vocês. Geralmente, todos os certificados são do formato de arquivo PEM. Você pode simplesmente abrir um bloco de notas ou qualquer editor de texto e arrastar os arquivos que você recebeu no formato de arquivo .crt. Que normalmente é chamado de arquivo .PEM. Se o certificado carregado em seu keytool, você pode exportar o certificado como um arquivo pfx do keytool. Em seguida, você pode separar o arquivo pfx da chave privada do arquivo pfx. Porque o arquivo pfx é a combinação de seu certificado e a chave privada. Portanto, você pode obter separadamente o arquivo de chave privada e usá-lo em seu aws amazon.

Suspeito que possa haver outra maneira de instalar o certificado. Pode ser que você possa entrar em contato com a autoridade de certificação e se houver alguma maneira de fazer com que seu certificado seja reemitido.

Rajan
fonte