421 Solicitação incorreta

1

Ocasionalmente recebo o seguinte erro 421:

Misdirected Request

The client needs a new connection for this request as the requested host name does not match the Server Name Indication (SNI) in use for this connection.

No entanto, a atualização do navegador limpa o erro e a página é carregada normalmente. A próxima vez que carregar a página não produzirá erros e, como tal, o padrão parecerá bastante aleatório. O único padrão que posso ver é que isso pode acontecer quando estou redirecionando uma página usando o cabeçalho ("Location:". $ Url);

Eu tenho um certificado de vários domínios PositiveSSL da Comodo. Meus servidores são Apache em um serviço de hospedagem compartilhada, então não tenho acesso à configuração.

Eu carrego páginas de um domínio e dentro da página são links para um segundo domínio no certificado.

Tudo que li sobre esse erro parece indicar que esse problema está relacionado ao fato de ser um certificado de vários domínios.

O que eu gostaria de saber é se existe alguma coisa na página da web (php) codificando as coisas que podem causar isso (e pode ser corrigido) ou se é um erro de configuração ou possivelmente um erro do servidor e somente minha serviço de hospedagem pode consertá-lo.

Até o momento, meu serviço de hospedagem não conseguiu fornecer nada e solicitei a chamada de volta com o horário exato em que ela acontece, para que possam pesquisá-lo. Qualquer ajuda seria apreciada, pois não estou muito confiante de que eles possam descobrir isso.

    
por mseifert 14.06.2018 / 21:50

1 resposta

1

Isso é causado pela seguinte sequência de eventos:

  1. O servidor e o cliente suportam e usam HTTP / 2.
  2. O cliente solicita uma página em foo.example.com .
  3. Durante a negociação de TLS, o servidor apresenta um certificado válido para foo.example.com e bar.example.com (e o cliente o aceita). Isso pode ser feito com um certificado curinga ou um certificado SAN.
  4. O cliente reutiliza a conexão para fazer uma solicitação para bar.example.com .
  5. O servidor não pode ou não deseja apoiar a reutilização de conexão entre domínios (por exemplo, porque você configurou seu SSL de forma diferente e o Apache deseja forçar uma renegociação de TLS) e atende ao HTTP 421.
  6. O cliente não tenta novamente automaticamente com uma nova conexão (veja, por exemplo, erro do Chrome # 546991 , agora corrigido). A RfC relevante diz que o cliente PODE tentar novamente, não que DEVE OU DEVE. Falha ao tentar novamente não é particularmente fácil de usar, mas pode ser desejável para uma ferramenta de depuração ou biblioteca HTTP.

O Evento # 6 está fora do seu controle, mas dependendo do software do servidor, o item 5 pode ser corrigido. Consulte a documentação do HTTP / 2 do seu servidor para obter mais informações sobre como e quando ele envia o HTTP 421. Como alternativa, você pode emitir certificados separados para cada domínio, mas isso cria mais sobrecarga administrativa e pode não valer a pena. Você também pode desativar o HTTP / 2 completamente, mas isso provavelmente é um exagero na maioria dos casos.

    
por 01.11.2018 / 21:31