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

54

Estou tendo 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 fraude?

    
por S-K' 29.04.2013 / 11:48

11 respostas

67

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

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

Certificados pagos não fornecem nenhum nível extra de criptografia por conta própria (geralmente). Mas um certificado auto-assinado fará com que o navegador lance um erro.

Sim, partes do SSL são uma farsa (um certificado de verisign vs um geotrust em que o verisign é de até 100x mais caro), mas não tudo.

Se tudo isso for 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 impressões digitais).

    
por 29.04.2013 / 12:05
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 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.

    
por 29.04.2013 / 22:12
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 a disponibilidade para comprovar seus certificados ou confiar em um terceiro que tenha feito essas verificações e mostre 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 comprovar que seu certificado foi emitido por você, não há necessidade técnica de usar um certificado de um provedor "certificado". Nesse caso, o certificado autoassinado pode até ser melhor do que um de um dos fornecedores.

Mas na maioria dos casos, não há possibilidade de os usuários fazerem esse processo sozinhos. Aqui, esses provedores de SSL entram no mercado. Eles oferecem o serviço para fazer essas verificações e expressar o resultado das verificações 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 certificado 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.

    
por 29.04.2013 / 17:55
4

O ponto principal é que, se o certificado for auto-gerado, os usuários comuns não terão como verificar sua veracidade. Para um certificado adquirido, eles supõem que, pelo menos, o que está impresso no 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, ou seja, o usuário sempre pode rastrear de onde veio o certificado, enquanto um certificado autoassinado é apenas uma identidade aleatória.

Em muitos sistemas, a "assinatura de código" era exigida de uma CA autorizada no passado, que é orientada por políticas, mas como os certificados autoassinados são tão numerosos, ela não é mais 100% aplicada agora.

    
por 29.04.2013 / 12:05
3

Não há diferença técnica (os seus próprios não são menos seguros) apenas 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.

    
por 29.04.2013 / 12:05
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 tiver sua própria assinatura de certificado, isso será perfeitamente aceitável e não deverá causar nenhum aviso aos usuários (desde que eles usem o certificado keychain como fonte confiável), mas ainda criará um aviso se você tentar usá-lo externamente.

Bottom-line: para uso interno, é bom, se você está fornecendo externamente para um cliente pagante, não ter nenhum aviso é a paz de espírito. Você se sentiria mais seguro com suas transações financeiras através de uma fonte credenciada, ou algum cara parado na rua que você realmente não conhece?

    
por 29.04.2013 / 12:12
3

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

No validation emails, no complicated configuration editing, no expired certificates breaking your website. And of course, because Let’s Encrypt provides certificates for free, no need to arrange payment.

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

On October 19, 2015, the intermediate certificates became cross-signed by IdenTrust, causing all certificates issued by Let's Encrypt to be trusted by all major browsers.[20]

..... On March 8, 2016, Let's Encrypt issued its millionth certificate after seven months of existence.[39]

On April 12, 2016, Let's Encrypt left Beta.

Link para administrador do sistema e desenvolvedores: link

Na era da tecnologia blockchain e da 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 o Letsencrypt não tenha nada a ver com a tecnologia blockchain, é um começo na direção certa. A necessidade de pagar uma alta taxa a cada ano para uma Autoridade de Certificação cara está chegando a um fim lógico.

    
por 21.04.2016 / 13:36
2

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

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

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

Claro, se esta é uma rede interna em uma intranet privada, então você provavelmente confia um no outro já que nesse caso um certificado autoritativo realmente não adiciona nada, então você pode ignorar com segurança as luzes vermelhas brilhantes que seu navegador jogue em você. Mesmo para sites pequenos onde você ainda deseja que o tráfego cliente-servidor seja criptografado, mas seu modelo de ameaça não garante autenticação strong. Nesse caso, você pode obter um certificado autoassinado e aceitar o (insignificante pelo seu modelo de ameaça) risco de um MITM.

O que provavelmente é satisfatório, considerando o quão caro pode ser um certificado SSL confiável.

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

    
por 29.04.2013 / 14:56
1

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

Não é o 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ê tenha assinado com sua certificação online ...

Seu PC não precisa estar conectado para que seus produtos digitais sejam verificados e validados com seu certificado ... você deve redirecionar a validação para a entidade de certificação.

    
por 04.05.2013 / 16:12
1

Desculpe entrar nessa discussão tão tarde - achei que valeu a pena ressaltar que, usando o openssl, é possível configurar uma CA privada com seu próprio certificado raiz e, em seguida, criar certificados de servidor assinados por essa autoridade de certificação. . Desde que o certificado raiz da CA seja importado para o navegador e o navegador seja avisado para 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 os usuários se conhecerem pessoalmente).

    
por 29.10.2015 / 23:21
-2

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

    
por 28.05.2013 / 18:40