Isso é causado pela seguinte sequência de eventos:
- O servidor e o cliente suportam e usam HTTP / 2.
- O cliente solicita uma página em
foo.example.com
. - Durante a negociação de TLS, o servidor apresenta um certificado válido para
foo.example.com
ebar.example.com
(e o cliente o aceita). Isso pode ser feito com um certificado curinga ou um certificado SAN. - O cliente reutiliza a conexão para fazer uma solicitação para
bar.example.com
. - 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.
- 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.