IE9 e configurações nokeepalive do apache SSL

8

Atualmente estou usando o Apache 2.2.3 e o CentOS 5.4 para meus aplicativos php (php em execução no 5.3.7) e o aplicativo está sendo executado em HTTPS e com o certificado da CA raiz.

O problema é que temos tido alguns problemas estranhos com o IE9 (apenas no IE9). Quando o navegador IE9 envia uma solicitação HTTPS ao nosso servidor, às vezes não há resposta HTTPS. O que eu notei é que o IE9 atualizará a página. Para ser mais específico, a página mencionada é uma página de login. Então, quando eu digito o nome de usuário e senha e enviar o formulário, mas não há resposta e IE9 parece recarregar a mesma página de login novamente. (com nome de usuário e senha em branco)

Ao rastrear a partir do nível do aplicativo, percebo que recebi o nome de usuário e a senha, e o aplicativo foi encerrado sem erros.

A principal dor de cabeça é que não pode ser reproduzida todas as vezes. Às vezes podemos fazer o login sem problemas, mas às vezes ele terá o referido problema mencionado acima.

Agora, nossa empresa tem equipe de rede, desenvolvedores e outras equipes. Nosso apache está sendo executado em um balanceador de carga. Os caras da rede afirmam que eles nunca mudam nenhuma configuração, a única mudança é a nossa aplicação. Mas do ponto de vista dos desenvolvedores, as mudanças não têm nada a ver com o processo de login.

Do meu ponto de vista, parece que uma vez que o usuário clica em enviar, e o aplicativo (apache) fez o que fez enviando um HTML (HTTPS Response), mas o HTML desapareceu de alguma forma na rede. Eu suspeito que há algo a ver com a conexão keep-alive? Provavelmente, o navegador IE9 lida com ele de maneira diferente e, de alguma forma, a conexão falha e recarrega a página para uma nova tentativa?

Mas, de qualquer forma, observei as seguintes configurações no Apache para confirmação de SSL:

SetEnvIf User-Agent ". MSIE. " \          nokeepalive ssl-unclean-shutdown \          downgrade-1.0 force-response-1.0

Não sabe como podemos configurar de uma forma que exclua o IE9 e acima? Quando eu faço uma pesquisa, as configurações acima são para corrigir algum problema de longa data quando o IE está se conectando com o Apache. Mas como o IE9 é novíssimo, provavelmente o problema já está corrigido e precisamos atualizar as configurações?

Espero que alguém possa lançar algumas luzes sobre isso ...

    
por forestclown 21.09.2011 / 02:51

1 resposta

3

O mais provável é que a configuração do servidor / rede tenha um problema em algum lugar e não seja causada por nenhuma peculiaridade do IE9.

Primeiro, livre-se da antiga configuração anterior ao IE6: SetEnvIf User-Agent ".MSIE." \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 e tente executar sem nada (em qualquer forma). A menos que você precise dar suporte ao IE5, o que eu duvido que você faça nesse caso, você está correto em alterar o regex para MSIE [2-5]

O balanceador de carga e não ter nenhum keepalive é provavelmente o problema. Eu ficaria muito desconfiado do balanceador de carga e verificaria exatamente o que está acontecendo lá primeiro.

Um balanceador de carga geralmente "balança a carga" entre dois ou mais endereços IP (internos ou externos, não importa neste momento).

Em seguida, não tendo nenhum keepalive em conexões entre solicitações, o computador cliente / navegador terá que executar a negociação de SSL para cada solicitação. Combine isso com lentidão e configurações de tempo limite baixas e podemos obter problemas de incompatibilidade de certificados SSL e provavelmente o IE irá parar por causa da configuração de segurança rígida. Eu não investiguei exatamente se o IE9 tem apenas esse traço. Eu suspeito que outros navegadores também façam isso e lidem com isso de forma diferente.

Se você estiver usando SSL, deverá ter KeepAlive , pois isso fará com que o site muito mais rápido e não tem que passar por SSL Negociação repetidamente falhando porque o balanceador de carga não está mantendo a sessão no mesmo servidor durante a vida útil do visitante.

Se o seu aplicativo é interno (em uma intranet), seu balanceador de carga está aleatoriamente pulando endereços IP em você e o SSL precisa que ele seja o mesmo por conexão.

Se não estiver em uma intranet, o mesmo pode ser verdade, não sei como sua rede está configurada, mas você deve verificar isso primeiro. Desative o balanceador de carga e veja se o problema existe. e definitivamente colocar continuar vivo.

link

Eu também verifico se você tem configuração reversa do DNS. Se estiver apontando para o balanceador de carga ou o servidor por trás do balanceador de carga ou não.

Teste sua conexão e analise seus cabeçalhos, se usar algo externo como redbot.org ou webpagetest.org para verificar quais cabeçalhos são enviados. Além disso, você pode usar algo como violinista

    
por 07.08.2012 / 19:28