O que acontece com o navegador de um usuário se um certificado SSL é substituído no meio da sessão?


8

À luz dos navegadores modernos que eliminam gradualmente os certificados de segurança assinados usando o algoritmo de hash SHA1, estamos ocupados substituindo todos os nossos certificados SHA1 por SHA2. Geralmente, poderíamos simplesmente substituir certificados por esses aplicativos da Web de uso interno principalmente à noite ou no fim de semana, quando havia pouco ou nenhum tráfego.

O que aconteceria se eu estivesse, sem saber, no meio de uma sessão criptografada e o certificado do domínio fosse substituído?

Para garantir a segurança, aconselhamos nossos clientes que eles poderiam assumir que os usuários no meio da sessão durante essa alteração poderiam ver uma interrupção da sessão e possível perda de dados ainda não armazenados no banco de dados. Se eu estivesse no meio da sessão durante uma substituição de certificado, poderia assumir que, quando carregasse a página seguinte, após a substituição do certificado, meu navegador exibisse um certificado assinado diferente daquele estabelecido com a minha sessão e faria com que a sessão " surtar". Eu esperaria que todos os navegadores lidassem com essa situação de maneira semelhante, mas, por favor, esclareça-me se eu estiver enganado.

Passei bastante tempo procurando informações mais específicas sobre como os navegadores lidariam com esse cenário, mas não tive muita sorte em encontrar informações gerais ou técnicas. Estou realmente curioso e decidi postar esta pergunta na esperança de obter uma resposta que responda ao Q de forma concisa, com referência a algumas fontes confiáveis ​​para validar.

Respostas:


7

... meu navegador verá um certificado assinado diferente do que minha sessão foi estabelecida e fará com que a sessão "surte".

Do ponto de vista de um webmaster, e sem entrar em detalhes sobre " como o SSL funciona " (o que seria melhor discutido em Segurança da Informação ) ...

A chave da sessão não corresponderia mais, portanto o servidor ou o navegador do cliente abortariam a conexão. O navegador do cliente faria outra solicitação de recursos na página seguinte não recebidos, o que abriria uma nova conexão, restabelecendo o handshake SSL, o certificado, as trocas de chaves e a chave de sessão novamente (como discutido em breve na parte inferior aqui ).

Como o novo certificado SSL seria emitido para o mesmo domínio, os usuários provavelmente não notariam nada, pois apenas o certificado seria alterado (ou seja, o cadeado verde ainda será exibido), que os usuários normalmente não visualizam de qualquer maneira, especialmente entre as páginas em o mesmo site.


No entanto, o que você pode não considerar é que, ao instalar o novo certificado SSL, você precisará configurar e reiniciar o servidor de qualquer maneira, para que as sessões sejam fechadas independentemente dos navegadores e não receberão nada ...

Portanto, sugiro redirecionar temporariamente todo o tráfego para uma página "Manutenção" usando um redirecionamento 302 , com uma notificação antecipada publicada no site informando o horário em que a manutenção ocorrerá e por quanto tempo o site ficará indisponível.

Uma alternativa para o redirecionamento seria enviar um código de resposta do servidor HTTP 503 Serviço Indisponível com um   campo de resposta do cabeçalho HTTP Repetir Após Após para indicar quando o servidor estaria disponível novamente.

Por último, mas não menos importante, se você tiver mais de um servidor para o front-end do site, poderá instalar o certificado em outro servidor e redirecionar novas conexões para ele enquanto atualiza os outros servidores. Você pode verificar as conexões existentes no Apache aqui e no IIS aqui para ajudar com isso, se você ainda não usa uma configuração à prova de falhas ou de balanceamento de carga.


Certs estão em um balanceador de carga na frente ... portanto, não há interrupção do serviço e nenhum redirecionamento 503 / temp é necessário.
Dallas

Portanto, se eu estivesse na página 5 de um fluxo de trabalho de 10 páginas ... minha sessão manteria as informações já inseridas nas páginas 1-5 e continuaria na página 6 com o novo certificado ou a redefinição da conexão perderia todas as variáveis ​​da sessão e me iniciaria novamente na página 1 fresco?
Dallas

Isso depende de como seu aplicativo da web é codificado. Ele deve rastrear o ID da sessão do usuário (armazenado em um cookie, campo de formulário, URL, etc.), diferente da sessão SSL / TLS . Portanto, se houver uma falha na conexão (que pode ocorrer normalmente), os dados da sessão do usuário permanecerão por um período de tempo até que façam outra conexão. Na estranha circunstância de que os IDs de sessão não estão sendo rastreados, você deve descarregar novas conexões para outro servidor e aguardar a conclusão ou o tempo limite das conexões existentes antes de colocar o servidor off-line para atualizar seu certificado SSL.
dan

Peço desculpas por redação ruim. O que eu estava falando é se uma sessão tem problema quando a próxima conexão vem de um certificado diferente do que a sessão foi estabelecida. A sessão não se importa? Eu pensaria que um certificado diferente teria algum efeito na retomada de uma sessão, mas tenho a impressão de que você está dizendo que a sessão não se importa com a conexão. Não sei qual é a diferença entre a sessão SSL e a "sessão do usuário"? Fiquei com a impressão de que o ID da sessão que rastreamos é o ID da sessão SSL / TLS, que também pensei que era a mesma coisa que a sessão do usuário.
Dallas

Acho que você está confundindo um pouco a terminologia: o ID da sessão é gerado pelo servidor e usado para rastrear o usuário através de solicitações subsequentes, já que o HTTP é sem estado . Todas as conexões de soquete TCP podem ser encerradas; portanto, cabe ao aplicativo rastrear o usuário quando o fizer, o que é feito usando um ID de sessão . Por exemplo: faça login com segurança em um banco ou outro site seguro, clique em alguns links, desative seu cartão de memória, ative-o e clique em outro link ... você ainda estará conectado, pois o ID da sua sessão é rastreado pelos respectivos inscrição.
dan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.