O objetivo de um certificado SSL é que o navegador tenha um grau razoável de confiança na chave pública do servidor para transações HTTPS.
Primeiro, vamos explorar o que aconteceria se não usássemos certificados. Em vez disso, o servidor enviava a chave pública em texto simples e o navegador iniciava a comunicação criptografada usando-a (a primeira coisa que faria seria criptografar sua própria chave pública e enviá-la com segurança). E se eu e o atacante me colocássemos no meio? Eu poderia substituir sua chave pública na mosca com a minha, ter uma conexão criptografada com o navegador, descriptografar todas as coisas que eu recebo, criptografá-lo com sua chave pública e enviá-lo (e vice-versa para o tráfego do tipo resposta). Nenhuma das partes notaria a diferença, pois ninguém conhecia as chaves públicas de antemão.
OK, então estabelecemos que precisamos que o navegador confie em minha chave pública. Uma maneira de fazer isso seria armazenar todas as chaves públicas registradas no navegador. Claro, isso exigiria uma atualização toda vez que alguém registrasse uma chave pública, e isso levaria ao inchaço. Também é possível manter as chaves públicas nas mãos dos servidores DNS 1 , mas os servidores DNS também podem ser falsificados e o DNS não é um protocolo seguro.
Portanto, a única opção que resta é "encadear" a confiança através de um mecanismo de assinatura. O navegador armazena os detalhes de algumas CAs e seu certificado será enviado junto com uma cadeia de outros certificados, cada um assinando o próximo e indo até a CA raiz / confiável / embutida. É o trabalho da CA garantir que o domínio pertença a você antes de assinar um certificado para você.
Como a CA é uma empresa, eles cobram por isso. Alguns mais que outros.
Se você criou seu próprio certificado, receberá um erro semelhante a:
Não há valor para um certificado não assinado. É como pegar um lápis e um livreto, um desenho, um passaporte que diz que você é Barack Obama. Ninguém vai confiar.
1. Afinal, sua entrada de DNS é criada quando você registra um domínio. Usar um protocolo mais robusto que permita registrar simultaneamente chaves públicas seria um conceito interessante.