2013-02-16 25 views
5

Sapevo solo che la "s" sta per "Secure", e un utente non dovrebbe mai inserire informazioni critiche su un sito Web che utilizza solo http. Ma voglio davvero sapere cosa fanno questi due protocolli influenzano la mia programmazione, ad esempio:Qual è la differenza tra http e https nella programmazione

  • Come fare qualche sito ha ottenuto il "https" e alcuni non (o forse non il modo in cui accendere e spegnere questa caratteristica, che Non lo so). Significa che devo registrarlo da qualche parte?

  • Ho pensato tra me e me che la comunicazione in http non è crittografata, mentre alcune crittografie possono aver luogo in https, è corretto?

  • E poiché il processo di crittografia (se presente) viene eseguito dal browser, di conseguenza, il mio codice sul lato server non ha nulla a che fare con "http" o "https", è corretto?

  • C'è un modo per forzare l'utente a utilizzare solo https?

+1

Ricerca SSL/TLS. –

+1

Non ha nulla a che fare con la programmazione. È un protocollo di trasferimento. – Kermit

risposta

4

È necessario installare un certificato SSL sul server Web per abilitare HTTPS. Ciò consentirebbe di stabilire una connessione crittografata tra il browser client e il server e tutto il traffico HTTP verrà crittografato. Questo certificato è rilasciato da un'autorità fidata. È anche possibile generare un certificato a scopo di test, ma quando un browser client naviga nel sito Web emetterà un avviso che indica che questo certificato non è stato rilasciato da un'autorità attendibile.

È possibile forzare l'utilizzo di HTTPS configurando il server Web per reindirizzare automaticamente tutte le richieste HTTP all'endpoint HTTPS corrispondente.

È possibile cercare SSL/TLS.

+0

* Questo certificato è rilasciato da un'autorità fidata. * I trust non sono necessariamente stabiliti da relazioni a pagamento, ad esempio * acquisto * di un certificato. Questo è utile nel vasto www. capire dove i certificati CA radice sono comunemente distribuiti tra un'ampia base di utenti, ma ci sono casi (come con InCommon qualche anno fa) in cui anche le autorità generali potrebbero non esistere nei browser più vecchi senza il certificato radice appropriato nel browser. I certificati relativi alla Intranet sono un'altra condizione di "autorità fidata". Volevo solo "chiarire" che a volte il punto di vista contenzioso. –

+0

Sì, è vero. È anche possibile generare autonomamente un certificato SSL e se si installa questo certificato nell'archivio certificati attendibili sui browser client, non verrà visualizzato alcun avviso. È solo che quando si progetta un sito Web su Internet in cui non si ha il controllo sui browser client, se non si acquista un certificato SSL da un'autorità attendibile, i browser riceveranno sempre un avviso che il certificato non è attendibile. –

+0

Capisco. ':)' Volevo solo che la gente leggesse questa risposta per capire che le autorità * trusted * e * certificate * non sono la stessa cosa. È un equivoco facile, da qui il mio commento a chi legge questa risposta. –

7
  • I siti che utilizzano il protocollo HTTPS utilizzano un certificato, rilasciato da un terzo di fiducia (o di una "autorità di certificazione"), che contiene una chiave pubblica (vedi: Public Key Infrastructure). La chiave pubblica è abbinata a una chiave privata e le informazioni crittografate con la chiave privata possono essere decodificate solo con la chiave pubblica. Questo è usato per confermare che il server è il detentore della chiave privata (ed è quindi l'entità certificata dall'autorità di certificazione). Per utilizzare il protocollo HTTPS, è necessario generare o acquistare un certificato. È più comune acquistare certificati piuttosto che generarli, per vari motivi.

  • La comunicazione HTTPS è crittografata. Le chiavi associate al certificato non eseguono la crittografia, invece il browser e il server utilizzano uno schema come Diffie-Hellman Exchange per creare una chiave utilizzata nella crittografia delle comunicazioni. Questo è importante, perché chiunque abbia la chiave pubblica può decriptare cose cifrate con la chiave privata.

  • Le informazioni inviate dal browser sono crittografate dal browser e decrittografate dal server. Il tuo software server Web decrittografa le informazioni; le informazioni ricevute non appariranno diverse dal traffico HTTP standard.

  • Sì, è possibile forzare HTTPS. Puoi farlo tramite il tuo software server (ad esempio RewriteRule in Apache, con un controllo RewriteCond per HTTPS) o tramite HSTS, che implica l'invio di un'intestazione specifica. Se si invia un'intestazione HSTS in un browser che supporta HSTS, il browser reindirizzerà automaticamente da HTTP a HTTPS (vedere: HTTP Strict Transport Security).

Problemi correlati