Os certificados SSL autoassinados são seguros?

33

Eu quero ter uma conexão segura, quando eu entrar no meu webmail, phpMyAdmin , etc.

Portanto, assinei meus próprios certificados SSL com o OpenSSL e disse ao Apache para ouvir na porta 443.

Isso é de fato seguro? Todas as minhas senhas são realmente enviadas através de uma camada segura? Que diferença faz se eu comprar um certificado SSL da Verisign ou assinar o meu próprio? No final do dia, todos os dados estarão no meu servidor de qualquer maneira. Então, qual é a grande diferença?

cherrun
fonte

Respostas:

40

Isso é tudo sobre confiança. Se você receber um certificado assinado da verisign, comprará para clientes aleatórios que seu certificado é confiável. Se você assinar automaticamente o certificado, as pessoas que não possuem o certificado instalado no computador não podem ter certeza de que não estão sendo atacadas por um ataque do tipo intermediário .

Se o seu servidor da Web for usado apenas por você, você não precisará de uma CA real (como a verisign) para assinar seu certificado. Basta instalar o certificado nas máquinas que você deseja usar e pronto.

Edit: Então, para responder sua pergunta: Sim, tudo está criptografado e você pode ter certeza de que ninguém pode ler seus dados confidenciais se souber que o certificado apresentado ao navegador é de fato aquele com o qual você configurou o servidor.

monoceres
fonte
12
O objetivo da CA é provar aos outros que um certificado pertence a quem você diz que pertence. Como você já sabe a quem o certificado pertence, em termos de acessar seu próprio servidor e apresentar seu próprio certificado, uma CA não serve para nada. No entanto, outras pessoas não podem acessar seus servidores com segurança, porque não têm como saber em qual certificado confiar. (Você sabe -. Confiança o que você emitiu)
David Schwartz
Essa também seria uma abordagem razoável se o servidor fosse acessado por um número limitado de usuários que poderiam contatá-lo diretamente para verificar o certificado - membros de sua família ou funcionários de uma pequena empresa, como exemplos.
bgvaughan
Um homem no meio, coordenado com uma autoridade de certificação, pode substituir um certificado autoassinado? Por exemplo, Bob se conecta ao site autoassinado de Alice, Scar envia a Bob um certificado diferente assinado pela CA Scar é coordenado com, o navegador de Bob nunca mostra um aviso SSL. Isso é possível?
Olá Mundo
14

Isso é tudo sobre confiança.

Digamos que você visite um site popular que apresente um certificado. Este é o site dizendo "Este é quem eu sou, você pode confiar em mim, porque eu tenho essa carta de apresentação assinada por alguém em quem você confia".

Nesse caso, o 'alguém em quem você confia' é uma das autoridades do certificado que (esperançosamente) fizeram o trabalho de perna para estabelecer a identidade do apresentador do certificado em seu nome.

O que você realmente confia é a confiança do autor do navegador na confiança da autoridade de certificação na identidade da pessoa que apresenta o certificado. Também há frequentemente mais de uma autoridade entre você e o apresentador, daí o termo: 'Cadeia de Confiança'. [1]

Quando você assina seu próprio certificado, não há cadeia de confiança. Seu site está apresentando seu próprio certificado de volta para você. Se você instalar o seu próprio certificado em seu navegador como um que você confia, então, que é tratada como uma autoridade, o mesmo que os que vêm pré-instalados. Você tem uma cadeia de confiança com apenas um link.

Se você visitar o seu próprio site e o navegador o avisar de que ele está apresentando um certificado não confiável, você deverá ter motivos de preocupação, pois, como em qualquer outro site que apresente um certificado não confiável, você não pode ter certeza que você está se comunicando com o site real.

Observe que ainda não mencionei a criptografia. Certificados são sobre a autenticação da identidade da parte com quem você está se comunicando. Por meio de certificados confiáveis, existe uma maneira de garantir razoavelmente que sua loja ou banco é o verdadeiro. Depois de estabelecer sua identidade, proteger as comunicações entre você é o próximo passo. Acontece que os certificados também contêm as chaves necessárias para facilitar essa segurança. Supondo que você configurou seu SSL corretamente, essa comunicação é tão segura quanto você faria com sua loja ou banco e suas senhas são igualmente protegidas. [2]

[1] Este não é um sistema sem falhas. Um mercado livre e um negócio de baixa margem e alto volume inevitavelmente levam à redução de custos: http://www.theregister.co.uk/2011/04/11/state_of_ssl_analysis/

[2] Pelo menos, protegido o suficiente para que seja muito mais barato alguém invadir sua casa espancar seus segredos, em vez de tentar descobri-los: http://xkcd.com/538/

SmallClanger
fonte
11

Na verdade, os certificados autoassinados podem ser seguros, mas não no modelo que estamos usando agora.


Sob o modelo de CA (autoridade de certificação) generalizada que todos usam atualmente, o objetivo do certificado sendo assinado por uma CA confiável é fornecer autenticação.

Quando obtemos um certificado, tudo o que realmente vemos são os 1 e 0 vindo da tomada na parede; não temos ideia de onde esses zeros e zeros vieram. No entanto, como o certificado é assinado por uma autoridade de certificação - algo que ninguém no mundo além dessa autoridade de certificação pode fazer - e porque confiamos na autoridade de certificação para verificar a identidade do proprietário do certificado, confiamos que o certificado vem de quem alega para.

Obviamente, se a CA estiver comprometida ou não verificar corretamente o proprietário , todas as apostas serão desativadas.


No entanto, há um outro modelo, em que certificados auto-assinados não oferecem autenticidade. Chama-se modelo de notário .

Essencialmente, em vez de confiar em uma única CA, distribuímos a confiança para qualquer número de notários . Esses notários vasculham a Internet em busca de certificados, mantendo um cache de todos os certificados que viram. Ao visitar um site pela primeira vez e obter o certificado, você pergunta a vários notários distribuídos globalmente qual foi o último certificado que eles viram. Se eles não concordarem com o que você está vendo, você poderá fazer parte de um ataque do tipo homem do meio.

Sob esse modelo, os certificados autoassinados são perfeitamente seguros, desde que assumamos que o servidor não seja comprometido imediatamente antes que qualquer notário possa visualizar seu certificado.


O modelo de notário ainda está em sua infância e é duvidoso que ele assuma o controle do modelo de CA (na verdade, ele não precisa - eles podem ser usados ​​em conjunto) . O projeto mais promissor até agora é o Convergence.io , que possui um plugin para o Firefox.

BlueRaja
fonte
2

Não é tudo sobre confiança ....

Certificados SSL podem servir a dois propósitos - 1) é o servidor web ao qual você está se conectando; e 2) criptografar as comunicações.

Você pode ter # 2 sem # 1, que é o que você realizou. O que resta então é a verificação de que a caixa à qual você está se conectando é a que você deseja.

Se for o meu servidor, não tenho problema em usar um certificado autoassinado por mim mesmo - embora exista algum risco de que alguém possa falsificar coisas para que eu me conecte ao servidor em vez do meu. Como ninguém se importa comigo e com meu servidor e tenho pouco valor aqui, não vejo muito risco nisso.

Por outro lado, se em vez de um servidor meu fosse um servidor seu, então eu ficaria preocupado.

uSlackr
fonte
Você diria: "Se for o seu servidor, eu NÃO ficaria preocupado"?
25412 Cherrun
não, ele disse "se é o meu servidor, não tenho problemas ... se é o seu servidor, tenho problemas".
Francesco
Você está incorreto. Ninguém poderia falsificar coisas para você se conectar ao servidor deles, e não ao seu. Eles não possuem uma chave que corresponda ao certificado autoassinado emitido e não podem apresentar um certificado diferente, pois você não o aceitaria.
David Schwartz
@cherun Meu objetivo era confiar em mim - não você (ou qualquer outra pessoa). Você pode / deve confiar em si mesmo.
uSlackr
1
-1. A criptografia é feita usando chaves simétricas negociadas durante o handshake. Obviamente, você usa o certificado para verificar a identidade da parte remota; caso contrário, não faria sentido criptografar a comunicação (poderia ser um MITM). Se for seu servidor e um certificado autoassinado, importe-o explicitamente para o seu cliente.
27712 Bruno Bruno