Come posso vedere se un sito supporta HTTPS? [chiuso]

0

Ho un classico proxy C-forking nella mia LAN; ora che conosco "how to socket", mi piacerebbe garantirgli un po 'di privacy.

Ad esempio, l'estensione del browser HTTPS Everywhere ( dalla sua pagina Wikipedia ),

It automatically makes websites use the more secure HTTPS connection instead of HTTP, if they support it.

Se usassi OpenSSL nel mio proxy, farei connessioni criptate: se il mio proxy riceve una richiesta GET (semplice richiesta HTTP per una connessione non sicura), con OpenSSL vorrei proteggere quella connessione aggiungendo un livello di TLS a esso.

Tuttavia, come riportato nella mia citazione precedente, HTTPS Everywhere rende un sito Web utilizza la connessione HTTPS se il sito lo supporta .

Quindi, come posso verificare (con codice C) se un determinato sito Web supporta HTTPS?

... per favore non dirmi che deve solo tentare una connessione alla porta 443 del server remoto.

    
posta Andrea Mazzocchi 16.12.2016 - 09:18
fonte

2 risposte

2

Il collegamento al sito remoto sulla porta 443 è praticamente tutto ciò che devi fare.

Se si dispone di un sito Web in esecuzione sulla porta predefinita a un determinato nome host, verrà utilizzata la porta 443 per HTTPS. Se il sito NON usa la porta predefinita non c'è modo di sapere quale porta verrà utilizzata per HTTPS (se presente) eccetto il tentativo di un handshake su ogni porta possibile: troppo lento per il proxy e potrebbe essere bloccato da IDS .

Potresti anche controllare la risposta a " come funziona TLS "che descrive la stretta di mano in dettaglio.

    
risposta data 16.12.2016 - 09:29
fonte
0

Il HTTPS Everywhere di EFF non ha alcuna magia per determinare se un sito supporta HTTPS.

Ciò che ha è una lista davvero grande di regole per la riscrittura degli URL. Quando si alimenta un URL HTTP da un lato, ciò che esce dall'altro capo è lo stesso URL HTTP con cui si è iniziato o un URL HTTPS corrispondente. Tieni presente che l'URL HTTPS corrispondente potrebbe essere diverso dall'URL HTTP.

Di conseguenza, se stai semplicemente cercando di replicare la funzionalità di HTTPS Everywhere, considera semplicemente l'utilizzo di il set di regole HTTPS Everywhere direttamente. È abbastanza ben documentato come scrivere queste regole, quindi interpretarle nel tuo codice dovrebbe essere relativamente facile. (C potrebbe non essere il linguaggio più semplice per lavorare con le espressioni regolari, ma sospetto che libpcre e gli amici possano tornare utili.)

Funziona molto meglio di sostituire naiivamente http:// con https:// all'inizio perché:

  • Non tutti i siti offrono lo stesso contenuto su HTTP e HTTPS
  • Non tutti i siti sono configurati correttamente per HTTPS con un certificato firmato dalla CA

Se combini la lista HTTPS Everywhere con elenco Preload HSTS , dovresti coprire una percentuale significativa di siti Web popolari, compatibili con HTTPS, con un minimo di lavoro e un rischio minimo di problemi.

    
risposta data 16.12.2016 - 13:44
fonte

Leggi altre domande sui tag