Por que preciso adquirir um certificado SSL quando posso gerar um localmente?

57

Estou com problemas para entender por que precisamos comprar certificados SSL quando podemos gerá-los localmente usando o openSSL. Qual é a diferença entre o certificado que compro e um certificado de teste que gero localmente? É apenas uma grande farsa?

SK '
fonte
17
Em termos da tríade da CIA para segurança da informação, certificados autoassinados fornecem confidencialidade e integridade (ou seja, eles permitem mensagens criptografadas entre duas partes), mas somente documentos assinados por uma fonte confiável fornecem autenticidade (ou seja, a outra parte na sua conversa criptografada) é realmente quem você pensa que é).
Apsillers
10
Felizmente, quando o DNSSEC entrar em ação, as pessoas poderão criar seu próprio certificado e armazená-lo em um registro DNS. A cadeia de confiança DNSSEC seria suficiente para provar que o certificado pertence ao proprietário do domínio. (Eu não acho que esta é uma especificação formal (ainda), mas seria bom)
jackweirdy
2
Para uso interno, você pode implantar o certificado como confiável usando a Diretiva de Grupo (no Windows).
21413 Ben
4
Muitas vezes me pergunto por que as pessoas não aceitar o meu próprio dinheiro impresso também;)
tgkprog
11
Nota: Existem fornecedores de certificados básicos gratuitos . 90% das necessidades das pessoas podem ser atendidas por elas. E algumas CAs possuem certificados de custo muito baixo, sem motivo para quebrar o banco, não importa o que você precise. (curta de uma delegação de curso)
Chris S

Respostas:

72

Uma palavra - confiança. O certificado SSL de um provedor em que seu navegador confia significa que eles fizeram pelo menos uma verificação básica para dizer que você é quem diz ser.

Caso contrário, eu poderia fazer meus próprios certificados para google.com ou yourbank.com e fingir ser eles.

Os certificados pagos não fornecem nenhum nível extra de criptografia sobre autoassinado (normalmente). Mas um certificado autoassinado causará um erro no navegador.

Sim, partes do SSL são uma farsa (um certificado da Verisign versus uma geotruste, na qual a Verisign é até 100x mais cara), mas não é tudo.

Se tudo isso é interno, não há necessidade de um certificado pago, pois você pode empregar seus próprios métodos de confiança (por exemplo, não fazer nada ou talvez apenas verificar a impressão digital).

Mark Henderson
fonte
8
Se tudo isso for interno, você pode implantar seu certificado como confiável usando a diretiva de grupo.
Ben
2
Por outro lado, a assinatura do motorista é uma farsa. Pelo que é, sim, é uma imitação enorme, mas não temos escolha. successfulsoftware.net/2008/02/27/...
Matt
2
@ Matt - eu li esse artigo antes; quando estávamos olhando para assinar código no trabalho. Decidimos apenas autoassinar e aconselhar as pessoas a verificar as assinaturas. Felizmente, temos usuários de alta tecnologia (principalmente).
Mark Henderson
E certificados autoassinados geram avisos em todos os navegadores. Embora certificados de provedores possam ser verificados por todos os principais navegadores, porque eles têm as chaves públicas desses provedores incorporados e podem verificar seus certificados e confirmar que foram realmente assinados pelo provedor.
17784 Matt
23

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 enviaria a chave pública em texto sem formatação e o navegador iniciaria a comunicação criptografada usando-a (a primeira coisa a fazer seria criptografar sua própria chave pública e enviá-la com segurança). E se eu, e atacante, me abrigássemos no meio? Eu poderia substituir sua chave pública em tempo real pela minha, ter uma conexão criptografada com o navegador, descriptografar todas as coisas que recebo, criptografá-la com sua chave pública e enviá-la (e vice-versa para tráfego do tipo resposta). Nenhuma parte notaria a diferença, pois ninguém conhecia as chaves públicas de antemão.

OK, então estabelecemos que precisamos de alguma maneira para o navegador confiar em minha chave pública. Uma maneira de fazer isso seria armazenar todas as chaves públicas registradas no navegador. Obviamente, isso exigiria uma atualização sempre que alguém registrasse uma chave pública, o que levaria a 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 por meio 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 subindo para a CA raiz / confiável / incorporada. O trabalho da CA é garantir que o domínio lhe pertença antes de assinar um certificado para você.

Como ser uma CA é um negócio, eles cobram por isso. Alguns mais que outros.


Se você criou seu próprio certificado, receberá um erro semelhante a:

insira a descrição do link aqui

Não há valor para um certificado não assinado. É como pegar um lápis e um livreto, desenhar um passaporte que afirma que você é Barack Obama. Ninguém vai confiar nisso.

1. Afinal, sua entrada DNS é criada quando você registra um domínio. Usar um protocolo mais robusto que permita registrar simultaneamente chaves públicas seria um conceito interessante.

Manishearth
fonte
Você também pode usar o grampeamento DNSSEC para o seu certificado SSL; portanto, o certificado deriva (em última instância) da ICANN como CA, e não de outra autoridade de certificação. Nenhum dos navegadores atuais suporta isso, embora o Chrome costumava.
Richard Gadsden
Hoje em dia, você tem o DANE e seus registros DNS TLSA, o que permite limitar determinados serviços a chaves ou CAs específicas.
Patrick Mevzek 18/04
5

A resposta para sua pergunta depende do seu público: Como todo o sistema de certificados é baseado em "confiança", seus usuários devem ter disponibilidade para comprovar seus próprios certificados ou confiar em terceiros que fizeram essas verificações e mostram o sucesso assinando seu certificado. O termo "para comprovar seus certificados" que usei é um pouco impreciso: a versão longa deve ser: "para provar que você é o proprietário do certificado e tem permissão para usá-lo".

Se todos os seus usuários o conhecerem pessoalmente e tiverem a capacidade técnica de provar que seu certificado foi emitido por você, não há necessidade técnica de usar um certificado de um fornecedor "certificado". Nesse caso, o certificado autoassinado pode até ser melhor que um de um dos provedores.

Mas, na maioria dos casos, não há possibilidade de os usuários executarem esse processo sozinhos. Aqui, esses provedores SSL entram no mercado. Eles oferecem o serviço para fazer essas verificações e expressam o resultado das mesmas assinando o certificado. Mas um fato importante a ter em mente é: Ao assinar um certificado, um provedor SSL expressa que verificou a identidade dos emissores de certificados de acordo com sua própria política de assinatura. Portanto, o usuário precisa decidir se essa política é precisa o suficiente e se pode confiar no provedor.

mschenk74
fonte
4

O ponto principal é que, se o certificado é gerado automaticamente, os usuários comuns não têm como verificar sua veracidade. Para um certificado adquirido, eles supõem que pelo menos verifique se o que está impresso dentro do certificado está correto. Idéia: se você colocar seu telefone e endereço no certificado, a CA deve verificar isso, mas eles raramente o fazem.

Além disso, o certificado de compra é rastreável, o que significa que o usuário sempre pode rastrear a origem do certificado, enquanto um certificado autoassinado é apenas uma identidade aleatória.

Para muitos sistemas, a "assinatura de código" era exigida de uma CA autorizada no passado, o que é orientado por políticas, mas como o certificado autoassinado é tão numeroso, não é mais 100% obrigatório agora.


fonte
4

Não há diferença técnica (as suas próprias não são menos seguras) apenas uma organizacional: o certificado da sua CA não faz parte da instalação padrão dos navegadores. Isso torna desconfortável para a maioria das pessoas se conectar ao seu certificado. Mas não faria sentido comprar um certificado para uma rede interna.

Hauke ​​Laging
fonte
3

Tudo se resume a confiar. Um provedor SSL "certificado" é supostamente respeitável (embora isso possa ser manipulado) versus um certificado autoassinado do próprio servidor.

Se a sua organização possui sua própria assinatura de certificado, isso é perfeitamente aceitável e não deve causar nenhum aviso aos usuários (desde que eles estejam usando seu chaveiro cert como uma fonte confiável), mas ainda assim criará um aviso se você tentar usá-lo externamente.

Conclusão: para uso interno, tudo bem, se você o estiver fornecendo externamente a um cliente pagador, não ter nenhum aviso é tranqüilo. Você se sentiria mais seguro tendo suas transações financeiras por meio de uma fonte credenciada ou por um cara parado na rua que você realmente não conhece?

szukalski
fonte
3

Recentemente, a LetsEncrypt anunciou a disponibilidade de suas ferramentas de linha de comando para gerar certificados válidos.

Sem e-mails de validação, sem edição complicada da configuração, sem certificados expirados que violam seu site. E, é claro, porque o Let's Encrypt fornece certificados gratuitamente, sem necessidade de organizar o pagamento.

Para aqueles que se perguntam se esses certificados são válidos nos principais navegadores, a resposta é Sim:

Em 19 de outubro de 2015, os certificados intermediários tornaram-se assinados pela IdenTrust, fazendo com que todos os certificados emitidos pelo Let's Encrypt sejam confiáveis ​​por todos os principais navegadores. [20]

Em 8 de março de 2016, o Let's Encrypt emitiu seu milionésimo certificado após sete meses de existência. [39]

Em 12 de abril de 2016, o Let's Encrypt saiu da versão Beta.

Link para administradores e desenvolvedores do sistema: https://letsencrypt.org/getting-started/

Na era da tecnologia blockchain e a eliminação de sistemas de confiança de terceiros, já era hora de a emissão de certificados caros por algumas autoridades escolhidas começar a ser questionada.

Embora a Letsencrypt não tenha nada a ver com a tecnologia blockchain, é um começo na direção certa. Espera-se que a necessidade de pagar uma taxa alta todos os anos a uma Autoridade de Certificação cara chegue a um fim lógico.

surfbuds
fonte
2

Simplificando, um certificado SSL autoassinado não significa nada. Não tem valor para o mundo externo. É como dizer "Eu possuo Espanha". Você pode honestamente pensar que sim, mas ninguém vai reconhecer sua reivindicação.

Uma analogia semelhante seria inventar algo e depois reivindicar que você possui os direitos da invenção, mas, a menos que você registre uma patente no escritório, será difícil acreditar na sua palavra, agora é?


O ponto principal de um certificado é que ele é assinado por uma autoridade em que as pessoas confiam. Se algum site tem um certificado SSL válido, isso significa que o proprietário teve o trabalho de registrar seu site, pagar pelo certificado SSL e obter a certificação oficial de alguma autoridade de certificação do mundo real, portanto, provavelmente não é um site de phishing barato. Por outro lado, se você confia em certificados autoassinados, o site de phishing pode simplesmente gerar seu próprio certificado falsificado (que você aceita com prazer) e pronto.

É claro que, se essa é uma rede interna em uma intranet privada, você provavelmente já confia uma na outra; nesse caso, um certificado autoritário realmente não adiciona nada; portanto, você pode ignorar com segurança as luzes vermelhas brilhantes que o navegador lançará para você . O mesmo para sites pequenos em que você ainda deseja que o tráfego cliente-servidor seja criptografado, mas seu modelo de ameaça não garante autenticação forte; nesse caso, você pode obter um certificado autoassinado e aceitar a (negligenciável pelo modelo de ameaça) risco de um MITM.

O que provavelmente é satisfatório, considerando o quanto os certificados SSL confiáveis ​​podem ser caros.


Em outras palavras, um certificado autoassinado equivale a dizer "Certifico que sou quem sou - confie em mim !".

Thomas
fonte
2
Isso está correto, mas ainda vale a pena notar que os certificados pagos são apenas uma prova de que alguém teve o trabalho de pagar dinheiro a uma autoridade de certificação. O pessoal de vendas do outro lado da Verisign / Namecheap / Whatever-CA não fará nada além de enviar um certificado para [email protected] (por exemplo, eles enviarão um para um site potencial de phishing do exqmple.org) .
você precisa saber é o seguinte
11
@tristan É bem verdade, eles poderiam usar procedimentos formais melhores para esse tipo de coisa, mas acho que os requisitos logísticos não seriam razoáveis.
Thomas
11
@tristan - é um sistema imperfeito, mas as autoridades de certificação têm algum incentivo para serem confiáveis. Por exemplo, se eles dessem a uma pessoa aleatória um certificado do Google, eles seriam removidos de todos os navegadores em pouco tempo. Eles também oferecem certificados de "validação estendida" que, em teoria, significam que eles fazem mais verificações. Qualquer um deles poderia decidir que isso requer testes de DNA pessoalmente se eles pensassem que isso aumentaria sua reputação e lhes renderia negócios.
Nathan Long
11
@NathanLong Não se trata de dar um 'certificado do Google' a um sujeito inescrupuloso, é que até o certificado EV ainda é apenas uma verificação de "alguém pode responder a e-mails deste domínio". De qualquer forma, estamos circulando os mesmos pontos de: a) os usuários ainda precisam saber para não dar dinheiro ao payqal.com, b) a barreira de custo do SSL não vale a pena para alguns golpistas, c) certificados pagos significam que é mais é provável que um site seja a pesquisa de DNS desejada e ed) é uma abordagem razoável para fornecer o valor inicial no cenário de "este servidor é de propriedade das mesmas pessoas / pessoas diferentes da última vez que você verificou"
89c3b1b8- Você pode usar o seguinte comando
Tristan, isso faz parte do custo. Certos muito baratos fazem validações muito baratas. Certificados muito caros (nível empresarial) podem fazer validações muito caras. (embora o preço não seja de forma alguma um indicador direto de quão bom foi o trabalho de validação). .
1

Para mantê-lo curto e simples ... e desmistificar um pouco o que foi dito ...

Não é um problema de criptografia. Com as ferramentas adequadas, você pode gerar um certificado localmente com o tipo de criptografia desejado ... e obter um certificado válido.

A principal vantagem que você tem ao comprar um certificado de uma entidade de certificação é que, durante o período em que o certificado é válido, eles mantêm em seus servidores um mecanismo para validar qualquer coisa que você assinou com sua certificação online ...

Seus PCs não precisam estar conectados para que seus produtos digitais sejam verificados e validados com seu certificado ... você deve redirecionar a validação para a entidade de certificação.

ZEE
fonte
1

Desculpe entrar nessa discussão tão tarde - pensei que valia a pena ressaltar que, usando o openssl, é possível configurar uma CA privada, com seu próprio certificado raiz, e criar certificados de servidor assinados por esta CA. Desde que o certificado raiz da CA seja importado para o navegador e o navegador seja solicitado a aceitá-lo, o certificado do servidor será aceito sem comentários. (Obviamente, essa é apenas uma opção viável se a comunidade de usuários for pequena e todos os usuários se conhecerem pessoalmente.)

pd9370
fonte
-2

Você confiaria em alguém que dissesse "Confie em mim"? A confiança na autenticidade só pode ser fornecida por uma "Autoridade Confiável", na qual todos confiam. É por isso que temos que pagar muito dinheiro pelos certificados.

Ravi
fonte
2
De acordo com essa lógica, não haveria provedores de certificados gratuitos. Mas há.
Chris S