Pergunta

O que é a série de passos necessários para verificar a segurança de um certificado SSL? Meu (muito limitado) entendimento é que quando você visita um site https, o servidor envia um certificado para o cliente (navegador) e o navegador obtém informações emissor do certificado a partir desse certificado, em seguida, usa isso para contactar o issuerer, e de alguma forma se compara certificados de validade.

  • Como exatamente isso é feito?
  • O que sobre o processo torna imune a ataques man-in-the-middle?
  • O que impede alguma pessoa aleatória de criação de seu próprio serviço de verificação para uso em man-in-the-middle, por isso tudo "olhares" seguro?
Foi útil?

Solução

Aqui está uma explicação muito simplificada:

  1. O navegador da Web transfere o certificado do servidor web, que contém a chave pública do servidor web. Este certificado é assinado com a chave privada de uma autoridade de certificação confiável.

  2. O navegador da Web vem instalado com as chaves públicas de todos os principais autoridades de certificação. Ele usa esta chave pública para verificar se o certificado do servidor web foi de fato assinado pela autoridade de certificação confiável.

  3. O certificado contém o nome de domínio e / ou o endereço IP do servidor web. Seus confirma web navegador com a autoridade de certificação que o endereço listado no certificado é aquele para o qual ele tem uma conexão aberta.

  4. O navegador da Web gera uma chave simétrica compartilhada que será usado para criptografar o tráfego HTTP nesta conexão; isso é muito mais eficiente do que usar a criptografia de chave pública / privada para tudo. Seu navegador criptografa a chave simétrica com a chave pública do servidor web, em seguida, envia-lo de volta, garantindo assim que apenas o servidor web pode decifrá-lo, uma vez que apenas o servidor web tem a sua chave privada.

Note-se que a autoridade de certificação (CA) é essencial para prevenir ataques man-in-the-middle. No entanto, mesmo um certificado não assinado vai impedir que alguém escuta passivamente em seu tráfego criptografado, uma vez que eles não têm nenhuma maneira de obter acesso à sua chave simétrica compartilhada.

Outras dicas

É importante notar que, além de compra de um certificado (como mencionado acima), você também pode criar o seu próprio gratuitamente; este é referido como um "certificado auto-assinado". A diferença entre um certificado auto-assinado e um que é comprado é simples: a compra foi assinado por uma autoridade de certificação que seu navegador já conhece. Em outras palavras, seu navegador pode facilmente validar a autenticidade de um certificado de compra.

Infelizmente isso levou a um equívoco comum que os certificados auto-assinados são inerentemente menos seguro do que aqueles vendidos pela CA do comercial como GoDaddy e Verisign, e que você tem que viver com avisos do navegador / exceções se você usá-los; isso é incorreto .

Se você distribuir com segurança um certificado auto-assinado (ou CA cert, como bobince sugerido) e instalá-lo em todos os navegadores que irão utilizar o seu site , é apenas tão seguro como aquele que é adquirido e é não é vulnerável a man-in-the-middle ataques e falsificação cert. Obviamente, isso significa que é apenas viável se apenas algumas pessoas precisam de acesso seguro ao seu site (por exemplo, aplicativos internos, blogs pessoais, etc.).

No interesse de aumentar a consciência e incentivando colegas blogueiros do pequeno-tempo, como eu, para se proteger, eu escrevi um tutorial de nível de entrada que explica com mais detalhes os conceitos por trás certificados e como criar e usar um auto com segurança cert assinatura automática (com exemplos de código e as imagens).

Você disse que

o navegador obtém informações emissor do certificado a partir desse certificado, em seguida, usa isso para contactar o issuerer, e de alguma forma compara os certificados de validade.

O cliente não tem que verificar com o emitente, porque duas coisas:

  1. todos os navegadores têm uma lista pré-instalada de todas as principais CAs chaves públicas
  2. o certificado é assinado, e essa assinatura em si é prova suficiente de que o certificado é válido porque o cliente pode ter certeza que, por sua própria, e sem entrar em contato com o servidor do emitente, que esse certificado é autêntico. Essa é a beleza de criptografia assimétrica.

Observe que 2. não pode ser feito sem 1.

Isto é melhor explicado neste grande diagrama eu fiz algum tempo atrás

(pular para "o que é uma assinatura?" Na parte inferior)

blob

O cliente tem uma loja de pré-semeado de chaves públicas SSL autoridades de certificação. Deve haver uma cadeia de confiança do certificado para o servidor através autoridades intermediárias até um dos chamados certificados de "root" para que o servidor para ser confiável.

Você pode examinar e / ou alterar a lista de autoridades confiáveis. Muitas vezes, você faz isso para adicionar um certificado para uma autoridade local que você sabe que você confia -. Como a empresa onde você trabalha ou a escola que você assistir ou não o que

A lista de pré-semeado pode variar dependendo de qual cliente você usa. Os grandes fornecedores de certificados SSL garantir que seus certificados de raiz são em todos os principais navegadores ($$$).

Monkey-in-the-middle ataques são "impossível" a menos que o atacante tem a chave privada do certificado raiz confiável. Uma vez que os certificados correspondentes são amplamente utilizados, a exposição de tal uma chave privada teria implicações graves para a segurança do comércio electrónico em geral. Por causa disso, as chaves privadas são muito, muito bem guardado.

Se você é mais tecnicamente espírito, este site é provavelmente o que você quer: http: //www.zytrax.com/tech/survival/ssl.html

Atenção: o buraco do coelho vai fundo:.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top