A autenticação do servidor SSL verifica se os sites com os quais você se comunica
são quem dizem ser. A autenticação confirma a identidade de um servidor
por meio de técnicas padrão de criptografia de chave pública, para
garantir que o certificado de um servidor e uma ID pública sejam válidos
e tenham sido emitidos por uma autoridade de certificados listados na lista do cliente de CA's confiáveis.
A comunicação com servidores "confiáveis" que possuem certificados
de autenticação emitidos por uma autoridade de certificação é fundamental para estabelecer
um ambiente seguro. Certificados de autenticação são documentos assinados
digitalmente que ligam a chave pública à identidade do proprietário
da chave privada. A autenticação ocorre no momento da conexão e é independente
do aplicativo ou do protocolo de aplicativo. Com o SSL, a autenticação
é executada por uma troca de certificados, que são blocos de dados
em um formato descrito no padrão ITU-T X.509. Certificados X.509 são emitidos e assinados digitalmente por uma autoridade de certificação.
No entanto utilizar o SSL não garante que o cliente esteja se comunicando com o servidor correto. Considere o seguinte cenário, em que
o "Servidor1" e "Servidor2" possuem certificados válidos de uma CA
que o cliente ("Cliente") confia. O cliente deseja uma sessão segura com o Servidor1,
mas o Servidor2 deseja interceptar a sua comunicação e está fisicamente localizado em um local que torna isso possível:
- O cliente envia uma solicitação para uma sessão SSL para o Servidor1. Ao invés disso,
a solicitação (e todo o tráfego subsequente) passa pelo Servidor2. Em vez de
encaminhar a solicitação do Cliente para o Servidor1, o Servidor2 responderá diretamente
à solicitação enviando seu próprio certificado para o Cliente.
- O Cliente recebe o certificado do Servidor2 e verifica sua lista de CA's confiáveis. Uma vez que o certificado do Servidor2 seja assinado pelo mesmo CA que o certificado do Servidor1,
o Cliente aceitará o certificado e criará uma sessão segura
com o Servidor2.
- Tendo completado a sessão segura com o Cliente, o Servidor2 solicitará
e criará sua própria sessão SSL com o Servidor1. A partir deste ponto, o Cliente
enviará informações criptografadas para o Servidor2. O Servidor2 decriptografa as informações, criptografa novamente, depois as envia para o Servidor1. Ele faz o mesmo para as informações que seguem a direção oposta. O resultado é que o Servidor2 consegue ler e até mesmo alterá-las, ainda que todos os dados sejam critografados à medida que elas seguirem pela internet.
A autenticação do servidor SSL é projetada para evitar esse resultado.
Quando a autenticação do servidor está ativada, o cliente, depois de assegurar
que o certificado do servidor é confiável, verifica se o nome na Internet
no certificado corresponde ao nome do servidor de Internet. Se
eles corresponderem, a negociação SSL continuará. Se não, a conexão
será finalizada.
Com a autenticação do servidor ativada, o cenário de segurança descrito acima deve proceder da seguinte forma:
- O cliente envia uma solicitação para uma sessão SSL para o Servidor1. A solicitação (e todo o tráfego subsequente) na verdade passa pelo Servidor2. Em vez de
encaminhar a solicitação do Cliente para o Servidor1, o Servidor2 responderá diretamente
à solicitação do Cliente enviando seu próprio certificado para o Cliente.
- O Cliente recebe o certificado do Servidor2 e verifica sua lista de CA's confiáveis. Uma vez que o certificado do Servidor2 seja assinado pelo mesmo CA que o certificado do Servidor1,
o Cliente aceitará o certificado e criará uma sessão segura
com o Servidor2.
- Após a sessão segura ter sido concluída, mas antes de qualquer dado real
ter sido enviado ou recebido, o Cliente compara o nome de Internet
no certificado recebido com o nome do servidor com quem deseja conversar. Uma vez que eles não correspondam, o Cliente saberá que a conexão não deve continuar e a desconectará.