Os Https podem funcionar sem um certificado?

9

Recentemente, nossa equipe de infraestrutura disse à nossa equipe de desenvolvimento que você não precisa de um certificado para https. Eles mencionaram que o único benefício da compra de um certificado era dar ao consumidor a tranqüilidade de estar se conectando ao site correto.

Isso vai contra tudo o que eu assumi sobre https.

Eu li a Wikipedia e menciona que você precisa de um certificado confiável ou um certificado autoassinado para configurar https.

É possível configurar o IIS para responder a https sem nenhum certificado?

Marca
fonte
7
Você pode achar que isso é apenas um problema de comunicação. Seu servidor provavelmente possui certificados autoassinados prontos para uso. Aliás, é esse aviso que você evita usando um certificado público confiável: m86security.com/kb/article.aspx?id=13446 Isso pode ser aceitável em seu ambiente ou não. Eu diria que é mais do que apenas paz de espírito - em um site público, é um sinal de profissionalismo!
22411 Dan
5
Certificados autoassinados fornecem criptografia, mas não podem proteger do homem nos ataques intermediários, pois você recebe os mesmos avisos sobre certificados inválidos ou não verificados para o autoassinado, assim como para um cara que intercepta o tráfego, descriptografa, roubando os dados e criptografando-os novamente para retornar ao cliente.
Bart Silverstrim
1
"Certificados autoassinados fornecem criptografia, mas não podem ser protegidos contra ataques intermediários [...]", a menos que o usuário possa confiar nesses certificados autoassinados explicitamente por algum mecanismo fora da banda, que é apenas realisticamente possível para uma pequena base de usuários que o conhece por meio de um mecanismo fora da banda. Improvável, de fato.
22411 Bruno
Ou, se confiarem na primeira vez, serão avisados ​​se isso mudar no futuro. Assim como as assinaturas SSH, na verdade.
Mllni
1
Tecnicamente, o SSL / TLS não precisa de certificados para proteger um canal de comunicação. De fato, o SSL / TLS pode usar outro mecanismo para proteger o canal: certificados pgp, nome de usuário / senha, chaves pré-compartilhadas ou "anônimo" (nenhuma autenticação). Da mesma forma, o SSL / TLS não garante criptografia, existem muitos códigos diferentes que ele pode usar, incluindo "nulo" (sem criptografia). E existem opções semelhantes para autenticação Digest. Então, isso é ótimo, mas quais programas usam isso: basicamente nenhum, definitivamente nenhum grande servidor ou software de navegador (todos exigem certificados).
Chris S

Respostas:

24

Não. Você deve ter um certificado. Pode ser autoassinado, mas deve haver um par de chaves público / privado para trocar a chave simétrica da sessão entre servidor e cliente para criptografar dados.

Camponês
fonte
O Diffie-Hellman anônimo, como observado em outra resposta, permitiu uma conexão sem um certificado - mas as versões modernas do OpenSSL geralmente são compiladas sem qualquer suporte para o ADH.
Brandon Rhodes
12

Em resumo, não, mas pode haver casos sutis, dependendo de como você deseja implantar o sistema.

HTTPS é HTTP sobre SSL / TLS e você pode usar SSL / TLS sem certificado ou com certificados de outros tipos além de X.509 .

  • Conjuntos de cifras anônimas: eles podem fornecer criptografia, mas sem autenticação. Bastante inútil no que diz respeito à segurança ... Para citar a RFC 4346 : "o anônimo Diffie-Hellman está fortemente desencorajado porque não pode impedir ataques do tipo intermediário. "
  • Chaves pré-compartilhadas : possui seu próprio mecanismo para verificar a identidade remota, mas a natureza compartilhada das chaves traz seu próprio conjunto de problemas (em particular implantação limitada).
  • Conjuntos de cifras Kerberos : o cliente pode verificar a identidade do servidor em relação ao nome principal do Kerberos.

A rigor, a especificação HTTP sobre TLS diz o seguinte:

Em geral, as solicitações HTTP / TLS são geradas desreferenciando um URI. Como conseqüência, o nome do host do servidor é conhecido pelo cliente. Se o nome do host estiver disponível, o cliente DEVE verificar a identidade do servidor, conforme apresentado na mensagem de certificado do servidor, a fim de evitar ataques man-in-the-middle.

Se o cliente tiver informações externas quanto à identidade esperada do servidor, a verificação do nome do host PODE ser omitida. (Por exemplo, um cliente pode estar se conectando a uma máquina cujo endereço e nome do host são dinâmicos, mas o cliente conhece o certificado que o servidor apresentará.) Nesses casos, é importante restringir o escopo dos certificados aceitáveis ​​o máximo possível. para impedir o homem no meio ataques. Em casos especiais, pode ser apropriado que o cliente simplesmente ignore a identidade do servidor, mas deve-se entender que isso deixa a conexão aberta ao ataque ativo.

Em resumo, ele é claramente destinado ao uso com um certificado X.509 (faz referência clara à RFC 2459, posteriormente substituída pela RFC 3280 e 5280: PKIs com certificados X.509).

Pode haver um caso extremo quando você estiver usando conjuntos de cifras Kerberos. Pode fazer sentido tratar que o tíquete de serviço Kerberos do servidor possa ter o mesmo objetivo que o certificado X.509 no HTTPS usual, para verificar a identidade da parte remota. Ele não se encaixa perfeitamente nas regras da RFC 2818 (embora possa se enquadrar em " Se o cliente tiver informações externas quanto à identidade esperada do servidor, o nome do host poderá PODER ser omitido. "), Mas não seria completamente absurdo. Dito isto, acho que os navegadores comuns não suportam os conjuntos de cifras TLS Kerberos em geral (alguns podem suportar o Kerberos via autenticação SPNEGO, mas isso não tem relação). Além disso, isso também funcionaria apenas em um ambiente em que o uso do Kerberos é adequado.

" [Dar] a tranqüilidade do consumidor de que ele está se conectando ao site correto " é na verdade um dos principais requisitos para garantir a comunicação entre ele e o servidor. Use um certificado que eles possam verificar, com as convenções de nomenclatura apropriadas (RFC 2818 ou mais recentemente, RFC 6125).

Bruno
fonte
1

Você não pode usar https sem nenhum certificado. Você precisa comprar um certificado confiável ou criar um autoassinado para teste. Parte da configuração do servidor da Web para usar https é apontar para os arquivos de chave corretos. Obviamente, isso se aplica a todos os servidores da Web, não apenas ao iis.

Khaled
fonte
Para testar se o seu OpenSSL pode suportar conexões sem certificado, execute openssl cipherse procure por um ADHprotocolo como ADH-AES256-SHA- se esse protocolo estiver presente, você poderá configurar tecnicamente uma conexão sem nenhum certificado envolvido.
Brandon Rhodes