Não é possível adicionar o ouvinte SSL, o certificado do servidor não foi encontrado para a chave

19

Estou tentando configurar o SSL no meu balanceador de carga com um certificado que comprei no GoDaddy.

Ao tentar fazer o upload do certificado no console, recebi um erro

Falha ao criar balanceador de carga: Certificado do Servidor não encontrado para a chave: arn: aws: iam :: ************: server-certificate / mycert

Eu nunca encontrei esse erro antes ao adicionar certificados SSL. Não sei por que iamé usado aqui.

Depois de pesquisar no Google, consegui fazer upload do meu certificado para iamusar o aws cli (novamente, sem saber por que eu tinha que fazer isso).

Agora, ao modificar os ouvintes, posso ver meu certificado carregado como um certificado SSL existente. No entanto, quando tento salvar as minhas alterações no balanceador de carga, recebo o mesmo erro. Eu verifiquei que o certificado existe:

$ aws iam list-server-certificates
{
    "ServerCertificateMetadataList": [
        {
            "ServerCertificateId": "*********************", 
            "ServerCertificateName": "mycert", 
            "Expiration": "2018-11-19T18:47:38Z", 
            "Path": "/", 
            "Arn": "arn:aws:iam::************:server-certificate/mycert", 
            "UploadDate": "2015-11-19T19:23:32Z"
        }
    ]
}

(Verifiquei que o número da conta ofuscada aqui é igual ao erro)

A partir daqui eu estou preso. Por que não consigo aplicar meu certificado neste balanceador de carga?


Edit Thu Nov 19 11:47:18 PST 2015

Depois de esperar um pouco e sair e entrar, consegui atualizar os ouvintes com meu certificado SSL. No entanto, parece não estar funcionando corretamente. Ao tentar carregar meu domínio ao longo HTTPSdo tempo limite da solicitação. Parece incapaz de carregar o certificado

$ echo | openssl s_client -connect www.example.com:443 2>/dev/null | openssl x509 -noout -subject
unable to load certificate
69457:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-52.30.1/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE
Steve Robbins
fonte
1
Certos são sempre armazenados no IAM, então parece que você atingiu um atraso na replicação do IAM ou outro erro em que o certificado parecia estar bem armazenado, mas não existia ... o que você originalmente deveria ter funcionado. O grupo de segurança ELB está aberto ao mundo para HTTPS? Nesse caso, você tem uma segunda anomalia aqui e eu sugiro criar um novo ELB do zero e ver se ele se comporta de maneira diferente.
Michael - sqlbot

Respostas:

30

Eu enfrentei o mesmo problema ao tentar criar o ELB a partir do console da web. Eu estava tentando criar um upload de um novo certificado lá via GUI e finalmente estava falhando com o mesmo erro. Eu o resolvi carregando os arquivos de certificado separadamente via aws cli. É explicado neste documento - http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ssl-server-cert.html#upload-cert

Carregue o certificado, chave privada e cadeia de certificados como esta

aws iam upload-server-certificate --server-certificate-name my-server-cert \
  --certificate-body file://my-certificate.pem --private-key file://my-private-key.pem \
  --certificate-chain file://my-certificate-chain.pem

E, em seguida, acesse o console da web e escolha a opção "Escolha um certificado existente no AWS Identity and Access Management (IAM)" e escolha o par de certificados que acabou de ser carregado. Funcionará bem depois disso.

suryasankar
fonte
1
Eu tive o mesmo problema. Resolva da maneira que você descreve, usando o cliente aws, conforme sugerido pelo link que você compartilha. Usar o formulário da Web do IAM Console para colar a chave, crt e chain NÃO funcionou para mim. Eu instalei a AWS-cliente no meu dev-máquina, configurá-lo com "configuração AWS" para adicionar credenciais e, em seguida, correu os aws comando iam uplad-server-certificado ...
wojjas
A GUI me deu problemas, a CLI não ... como de costume.
Spechal
1
Para uma atualização (agora é 2017), acabei de falar com o suporte da Amazon e isso ainda é um problema conhecido. A CLI é a única maneira de garantir que esse processo funcione corretamente. -_-
Nicholas Kreidberg
2
Meados de 2017 e o problema ainda existe.
Diogo Melo
2
Fim de janeiro de 2018 - ainda e edição
Andrew S
17

O erro é enganoso. Faz o upload do certificado. Depois de receber essa saída de erro, volte para alterar. Escolha o certificado IAM existente e clique no menu suspenso - você deve ver o novo certificado lá.

user384640
fonte
Foi o que aconteceu comigo também. Eu recebi o erro, assumi que isso significa que o certificado não foi carregado, então tentei novamente ... e recebi um erro diferente, afirmando que o certificado já estava lá. Sair da interface do usuário "novo certificado" e voltar e escolher o certificado que acabei de enviar como certificado "existente" funcionou perfeitamente.
Coredumperror 03/03
1
Obrigado! Isso está tão desarrumado. Não acredito que eles não consertaram algo assim.
nave 30/09/17
que é exatamente correto
shareef
Isso continua a acontecer no fluxo de trabalho de upload do certificado ELB IAM, mas eles o corrigiram no fluxo de trabalho de upload do certificado ALB IAM.
Josip Rodin
5

Eu tive o mesmo problema, mas felizmente consegui resolvê-lo sem precisar acessar a CLI. Solicitei ao ELB para adicionar um ouvinte HTTPS colando a cadeia de certificados no campo de certificado de chave pública , após o próprio certificado.

O erro só se manifestou quando a cadeia de certificados foi colada em sua própria caixa de entrada da cadeia de certificados no console (marcada como opcional). Não sei ao certo por que isso fez diferença, mas ele criou o ouvinte HTTPS no ELB e tudo foi bom.

Matthew Long
fonte
Isso funcionou para mim agora com um certificado Comodo DV comprado via SSLmate. O problema separado foi que eu recebi um erro logo após clicar no botão final 'enviar', que foi corrigido ao clicar novamente no botão após alguns segundos (atraso na propagação do IAM devido a uma eventual consistência?)
RichVel
3

Era devido ao caractere especial no Nome do certificado:. (Ponto) no meu caso. Tudo funcionou bem depois de remover todos os pontos do nome do certificado

essis
fonte
1
E também remova "-" dash
ysrb
2

Eu acabei de acertar também. Tentei cinco vezes para criar um novo ELB e sempre falhava. Nunca tentei fazer a variante da API, mas consegui definir o certificado SSL

  1. Primeiro criando o ELB; então
  2. modificando o ouvinte alterando de HTTP para HTTPS e fazendo upload do meu certificado + chave + intermediários.
Ztyx
fonte
1

Eu enfrentei o mesmo problema. No meu caso, recebi o erro "Certificado do servidor não encontrado para a chave" ao fazer o upload de um certificado SSL, mas eles acabam sendo carregados e exibidos no menu suspenso. Não recebo nenhum erro ao fazer o upload via CLI. Quando entrei em contato com o suporte da AWS, eles me deram o motivo abaixo para o erro

A razão para isso acontecer é a consistência eventual. Os certificados enviados são armazenados no IAM. Como o IAM possui um grande banco de dados, o certificado carregado precisa se propagar por todos os bancos de dados. Se não houver tempo suficiente para propagar, o ELB que está tentando buscar esse certificado não poderá encontrá-lo no terminal que está consultando. Portanto, lança "Certificado do servidor não encontrado para a chave". Quando, eventualmente, é propagado, é possível vê-lo mais tarde como um certificado já carregado

Ramadas
fonte
1

Eu consegui contornar isso, indo ao gerenciador de certificados no console do aws e fazendo o upload primeiro. Em seguida, use o assistente do balanceador de carga e selecione o certificado que eu enviei.

user160004
fonte
horas extras, carrego o SSL para a AWS e corro para um problema diferente. Desta vez, configurá-lo no Certificate Manager e, em seguida, usá-lo no EC2 Load Balancer funcionou !!
user566245
0

O mesmo problema aqui ao usar a interface da web da AWS: carreguei um certificado válido, a chave correta e a cadeia completa, mas obtive o erro mencionado acima.

Eu tentei uploade o certificado para outro balanceador de carga (teste). O upload funcionou, mas o status do ouvinte diz: "Certificado inválido".

Quando abri o diálogo "Selecionar certificado" novamente, nenhum certificado foi selecionado. Mas, obviamente, o certificado foi carregado corretamente, porque eu poderia selecioná-lo na lista de certificados.

Então, voltando ao meu balanceador de carga original, tentei atribuir esse certificado enviado, coisa estranha agora: ele não estava na lista. Eu tentei e fiz o upload do certificado e da chave, mas deixei de fora a cadeia de certificados. Isso funcionou, então eu sabia que deveria ser a cadeia, isso não está correto (é um commodo-cert). Eu baixei a cadeia novamente da página oficial, carreguei o pacote inteiro e funcionou. O que é estranho agora: quando comparei os dois - o corrupto e o novo baixado, eles parecem iguais. Mesmas datas, mesma série, o mesmo. Mas diferente.

Para encurtar a história: Funcionou baixando os certificados intermediários novamente.

nr
fonte
0

Eu tive esse mesmo problema e o que acabou por corrigir foi entrar no Grupo de Segurança para o balanceador de carga e garantir que a porta 443 fosse aberta.

Chris DeGroat
fonte
0

Antes de criar o balanceador de carga clássico, você precisa criar uma AMI (imagem da sua instância em produção). Com isso, vá para as configurações de criação do balanceador de carga e faça o processo novamente e, depois disso, os certificados fornecidos e todos os detalhes no meu caso.

dbarenas
fonte
0

Eu contornei isso ao não preencher o campo opcional Cadeia de certificados .

Danny Schoemann
fonte
0

Eu tive o mesmo problema se estivesse carregando um certificado diretamente.

Se eu usasse o Gerenciador de Certificados (AWS Certificate Manager - ACM), conseguiria carregar o certificado. Depois disso, eu poderia simplesmente selecionar o certificado em uma lista suspensa.

flokoe
fonte