Https può funzionare senza un certificato?


9

Recentemente il nostro team di infrastrutture ha dichiarato al nostro team di sviluppo che non è necessario un certificato per HTTPS. Hanno affermato che l'unico vantaggio dell'acquisto di un certificato è stato quello di garantire al consumatore la tranquillità di collegarsi al sito Web corretto.

Questo va contro tutto ciò che ho assunto su https.

Ho letto Wikipedia e menziona che è necessario un certificato attendibile o un certificato autofirmato per configurare https.

È possibile configurare IIS per rispondere a https senza alcun certificato?


7
Potresti scoprire che questo è solo un problema di comunicazione. Probabilmente il tuo server ha certificati autofirmati pronti all'uso. Per inciso, è questo avviso che eviti utilizzando un certificato di fiducia pubblico: m86security.com/kb/article.aspx?id=13446 THat potrebbe essere accettabile nel tuo ambiente o potrebbe non esserlo. Direi che non è solo tranquillità: in un sito Web pubblico è un segno di professionalità!
Dan,

5
I certificati autofirmati ti forniscono la crittografia, ma non possono proteggersi dagli attacchi man in the middle, poiché ricevi gli stessi avvertimenti sui certificati non validi o non verificati per gli autofirmati che fai per un ragazzo che intercetta il traffico, decodificandolo, rubare i dati e crittografarli nuovamente per tornare al client.
Bart Silverstrim,

1
"I certificati autofirmati ti forniscono la crittografia, ma non possono proteggersi dagli attacchi man in the middle [...]", a meno che l'utente non possa fidarsi esplicitamente di quei certificati autofirmati mediante un meccanismo fuori banda, che è realisticamente possibile solo per una piccola base di utenti che ti conosce tramite un meccanismo fuori banda. Davvero improbabile.
Bruno,

O se si fidano di lui per la prima volta, verranno avvisati se cambia in futuro. Proprio come le firme SSH, davvero.
mfinni,

1
Tecnicamente SSL / TLS non ha bisogno di certificati per garantire un canale di comunicazione. In effetti, SSL / TLS può utilizzare altri meccanismi per proteggere il canale: pgp certs, nome utente / password, chiavi precondivise o "anonimo" (nessuna autenticazione). Allo stesso modo SSL / TLS non garantisce la crittografia, ci sono molti diversi cypher che può usare, incluso "null" (nessuna crittografia). E ci sono opzioni simili per l'autenticazione digest. Quindi è tutto fantastico, ma quali programmi ne usano uno: praticamente nessuno, assolutamente nessun server o software browser importante (richiedono tutti i certificati).
Chris S,

Risposte:


24

No. Devi avere un certificato. Può essere autofirmato, ma deve essere presente una coppia di chiavi pubblica / privata per scambiare la chiave simmetrica della sessione tra server e client per crittografare i dati.


Diffie-Hellman anonimo, come indicato in un'altra risposta, consentiva una connessione senza certificato, ma le moderne versioni OpenSSL sono generalmente compilate senza alcun supporto per ADH.
Brandon Rhodes,

12

In breve, no, ma potrebbero esserci casi sottili a seconda di come si desidera distribuire il sistema.

HTTPS è HTTP su SSL / TLS e puoi utilizzare SSL / TLS senza certificato o con certificati di altro tipo rispetto a X.509 .

  • Suite di cifratura anonima: possono fornire la crittografia, ma senza autenticazione. Piuttosto inutile per quanto riguarda la sicurezza ... Per citare RFC 4346 : " Anonimo Diffie-Hellman è fortemente scoraggiato perché non può impedire attacchi man-in-the-middle " .
  • Chiavi pre-condivise : ha un proprio meccanismo per verificare l'identità remota, ma la natura condivisa delle chiavi comporta una serie di problemi (in particolare una distribuzione limitata).
  • Suite di crittografia Kerberos : il client può verificare l'identità del server rispetto al nome principale Kerberos.

A rigor di termini, la specifica HTTP su TLS dice quanto segue:

In generale, le richieste HTTP / TLS vengono generate mediante la dereferenziazione di un URI. Di conseguenza, il nome host per il server è noto al client. Se il nome host è disponibile, il client DEVE verificarlo con l'identità del server come indicato nel messaggio Certificato del server, al fine di prevenire attacchi man-in-the-middle.

Se il client dispone di informazioni esterne sull'identità prevista del server, la verifica del nome host può essere omessa. (Ad esempio, un client potrebbe connettersi a una macchina il cui indirizzo e nome host sono dinamici ma il client conosce il certificato che il server presenterà.) In questi casi, è importante restringere il più possibile l'ambito dei certificati accettabili in per prevenire attacchi nel mezzo dell'uomo. In casi speciali, può essere appropriato che il client ignori semplicemente l'identità del server, ma si deve comprendere che ciò lascia la connessione aperta all'attacco attivo.

In breve, è chiaramente inteso per l'uso con un certificato X.509 (fa chiaramente riferimento a RFC 2459, successivamente sostituito da RFC 3280 e 5280: PKI con certificati X.509).

Può esserci un caso limite quando si utilizzano le suite di crittografia Kerberos. Può essere logico trattare il ticket di servizio Kerberos del server potrebbe avere lo stesso scopo del certificato X.509 nel normale HTTPS, per la verifica dell'identità della parte remota. Non si adatta perfettamente alle regole di RFC 2818 (anche se potrebbe rientrare in " Se il client dispone di informazioni esterne sull'identità prevista del server, il controllo del nome host PUO 'essere omesso. "), Ma non lo sarebbe completamente assurdo. Detto questo, non credo che i normali browser supportino le suite di crittografia TLS Kerberos in generale (un numero può supportare Kerberos tramite l'autenticazione SPNEGO, ma non è correlato). Inoltre, questo funzionerebbe anche solo in un ambiente in cui l'uso di Kerberos è adatto.

" [Dare] la tranquillità dei consumatori che si stanno collegando al sito Web corretto " è in realtà uno dei requisiti chiave per garantire la comunicazione tra loro e il tuo server. Utilizzare un certificato che possono verificare, con le convenzioni di denominazione appropriate (RFC 2818 o più recentemente RFC 6125).


1

NON puoi usare https senza alcun certificato. È necessario acquistare un certificato attendibile o crearne uno autofirmato per il test. Parte della configurazione del server Web per l'utilizzo di HTTPS consiste nel puntarlo ai file chiave corretti. Naturalmente, questo vale per tutti i server Web non solo per IIS.


Per verificare se OpenSSL è in grado di supportare connessioni senza certificato, esegui openssl cipherse cerca un ADHprotocollo simile ADH-AES256-SHA: se tale protocollo è presente, puoi tecnicamente impostare una connessione senza alcun certificato.
Brandon Rhodes,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.