Um certificado SSL autoassinado é um falso senso de segurança?

30

Um certificado SSL autoassinado é uma falsa sensação de segurança?

Se você está sendo interceptado, o usuário simplesmente aceita o certificado como ele / ela sempre faz.

    
por Andre 13.06.2011 / 08:07

5 respostas

25

Pergunta interessante, depende do uso na minha opinião. Você ainda está protegido em termos de a sessão ser criptografada, mas não tem como saber se é o certificado SSL correto apresentado a você, a menos que você distribua o certificado raiz da CA para usuários / clientes. Para testes internos / projetos de desenvolvimento isso funcionaria muito, você gera um certificado de CA raiz que você usa para distribuir aos usuários (pode ser feito via Diretiva de Grupo no Windows e via linha de comando openssl no Linux / BSD) e usa esse certificado raiz para assinar seu CSR. Os usuários não verão um aviso nem nada e você sabe que o certificado está assinado por sua autoridade de certificação interna.

Para sites externos em que você não pode garantir isso, eu ainda diria que um certificado auto-assinado é melhor do que nenhum SSL se você estiver enviando senhas ou outras informações confidenciais através da conexão.

No entanto, do lado positivo existem muitos emissores de certificados "comerciais" muito baratos, sendo um deles o GoDaddy . Você pode obter um certificado por cerca de 40 euros por ano. GoDaddy até oferece certs gratuitos para sites de projetos do OpenSource.

    
por 13.06.2011 / 09:05
12

Vou discordar, uma vez por razões técnicas estreitas, e uma vez por motivos gerais.

A base técnica restrita é que o OP perguntou sobre certificados auto-assinados, e várias outras respostas referem-se a certificados assinados por CAs privadas, o que é um problema ligeiramente diferente. Mas não muito diferente, então isso é apenas uma nota de passagem.

A principal objeção é que eu acho que enquanto os certificados assinados comercialmente são mais do que despesas triviais - e US $ 40 por ano não é uma despesa trivial para muitas pessoas neste planeta - certificados auto-assinados têm um papel importante a desempenhar na segurança da internet, desde que suas limitações sejam reconhecidas .

Um certificado auto-assinado é como uma chave ssh do meu arquivo known_hosts . Sem verificação independente, não posso garantir que estou falando com o sistema que acredito ser; mas pode me garantir que o sistema com o qual estou falando agora é o mesmo sistema com o qual conversei da última vez em que pensei que estava tendo uma conversa com ele. Nós armazenamos em cache chaves ssh o tempo todo, e eu nunca conheci um administrador do sistema que tenha verificado independentemente mais do que uma fração das chaves públicas em seu arquivo known_hosts .

Certificados auto-assinados (e, nesse caso, certificados assinados por CAs não geralmente válidas) são muito melhores do que nenhum SSL, contanto que as pessoas percebam que, a menos que as verifiquem, só garantem a comunicação para si mesmas , o servidor na outra extremidade do registro DNS e qualquer homem no meio atualmente na linha. Se eles verificarem o certificado de forma independente, a autenticação e a criptografia serão pelo menos tão strongs quanto as fornecidas por um certificado assinado por uma autoridade de certificação reconhecida.

Além disso, aqueles que desejam apresentar o uso de certificados assinados por uma AC reconhecida como a única panacéia de segurança da Internet podem precisar pensar bastante sobre questões como inclusão da CA de assinatura do governo chinês no pacote padrão Mozilla e os certificados SSL fraudulentos assinados pela Comodo .

    
por 13.06.2011 / 15:31
8

Para sites externos, em que os usuários não têm seu certificado de autoridade de certificação instalado (que é o caso mais comum), sim, um certificado autoassinado fornece uma falsa sensação de segurança e é pior que inútil:

  • Primeiro, sem um certificado de CA pré-instalado, como o usuário verifica se o certificado realmente vem de você, e não de um invasor? Ao combinar os campos de certificado (CN, impressões digitais, etc), é claro - mas contra o quê? Então, agora você precisa de um canal lateral para verificar o certificado - e nas poucas instâncias que eu vi, os operadores da linha de suporte (que deveriam ter servido como canal lateral para verificação) não têm ideia do que isso é suposto significar; Além disso, operar esse canal lateral é muito mais caro do que obter um certificado assinado por uma CA confiável, portanto, o usuário deve confiar cegamente em você.

  • Em segundo lugar, o alerta assustador que o usuário recebe é assustador por um bom motivo: como o usuário não pode / não verificar o certificado apresentado, ele pode estar com segurança transmitindo dados para o Elaxiano Haxx0r D00dz.

  • Terceiro, e o pior de tudo, você está dessensibilizando os usuários : "bem, eles me disseram que eu deveria ignorar esse aviso em link , e uma bigorna não caiu na minha cabeça, e meu peixinho dourado também não morreu; sooooo, isso significa que é apenas outra caixa de alerta sem qualquer significado real, então eu posso ignorar esta caixa sempre que eu a encontrar - eu recebo aquele ícone de bloqueio legal de qualquer maneira, e isso é importante. "

Em outras palavras, o nível de proteção é comparável ao HTTP simples (exceto para sniffing no fio: embora os dados sejam criptografados em trânsito, isso é um recurso bastante anêmico sem verificação de endpoint), mas o sentir-se de proteção é excessivamente alto. Analogia de carro ruim: "Eu tenho ABS, então agora posso dirigir com segurança em condições ruins" - exceto que o ABS só existe no catálogo de vendas do carro, sem estar presente no carro.

Sugestões de leitura: Melhores Práticas do OWASP SSL

TL; DR: Ao usar certificados auto-assinados em sites públicos, você está tornando a Internet um lugar pior, um usuário sem pistas de cada vez.

    
por 13.06.2011 / 13:44
8

Depende. Se você acha que isso o torna mais seguro, aumenta seu risco à medida que você escolhe fazer coisas mais arriscadas com sua falsa sensação de segurança. Se você trata-lo funcionalmente equivalente ao HTTP, então eu diria que você é um pouco mais seguro.

Sem SSL / HTTPS, qualquer pessoa com wireshark em sua rede (ou a rede local de qualquer pessoa que esteja efetuando login) pode ouvir e capturar nomes de usuário / senhas enviados como texto simples.

Com SSL auto-assinado, eles não podem simplesmente ouvir, mas agora devem falsificar seu site, potencialmente alterar o DNS para fazer um ataque do tipo man it the middle (MITM). Isso ainda é uma ameaça, mas significativamente mais difícil para eles realizarem.

O outro problema com o uso de SSL auto-assinado é que muitos navegadores tratam os certificados auto-assinados como uma grande ameaça à segurança e o avisam antes de entrar (por exemplo, chrome) com uma página vermelha gigante. link Isso pode ser um grande inconveniente.

Portanto, a linha de fundo é: se você executar algo que não precise ser particularmente seguro (por exemplo, sem dados de cartão de crédito, sem segurança social) e não puder pagar um certificado apropriado, um certificado autoassinado faça algum sentido (para dizer, previna outros usuários da rede de farejar facilmente suas informações de login).

    
por 13.06.2011 / 16:47
0

Depende do que você quer dizer com "segurança" e qual é a extensão.

Por exemplo, seu navegador vem com um conjunto de CA aceito por padrão. Isso significa que qualquer certificado emitido por esta CA é aceito pelo seu navegador (até que corresponda ao nome do DNS). Agora, imagine que algum governo maligno seja dono de uma CA ou possa forçar a CA a emitir um certificado para o site que você está visitando. Então, fazer um MITM é muito fácil: eles podem fazer proxy em sua conexão, enviando para o seu navegador o certificado que eles possuem, e seu navegador irá aceitá-lo, já que ele vem de uma CA "confiável". Até que eles sejam transparentes ao DNS (que é a base para o MITM), tudo bem.

Assim, a "lista de CAs aceitas" é basicamente uma grande falha de segurança, até que uma dessas CA coopere com algum governo maligno. Ter sua própria CA é muito melhor.

É claro que você pode fazer isso em sua empresa ou em seu servidor doméstico, porque você pode instalar seu próprio certificado de CA no cliente, que também controla. Em um servidor público, você não pode lidar com nenhum usuário, pedindo-lhe para adicionar uma exceção ou para adicionar seu certificado.

Então, depende do que você quer dizer com "segurança" e o escopo. Se você possui os clientes, CERTO ASSENTE, o auto-assinado é mais seguro, até que você instale no próprio cliente o certificado de sua própria CA.

É claro que você não pode fazer isso em um site público, já que não possui todos os clientes. Então você vai ter um risco de comportamentos diferentes, o que não é seguro.

    
por 23.01.2015 / 00:17