Sto cercando di ottenere l'implementazione Net::HTTP
di Ruby per funzionare con SNI.Supporto indicazione nome server in Net :: HTTP?
Sia mail.google.com sia gmail.com vivono sullo stesso indirizzo IP, quindi quando ci si connette tramite SSL, il server di Google deve sapere quale certificato utilizzare. Per impostazione predefinita, restituisce il certificato mail.google.com, che è un problema se stai cercando di implementare WebFinger.
WebFinger richiede di recuperare https://gmail.com/.well-known/host-meta
per ottenere le informazioni LRDD, tuttavia, per motivi di sicurezza, è fondamentale verificare le informazioni del certificato SSL.
Poiché in questo caso, Google offre il certificato mail.google.com predefinito, lo SSL post_connection_check
non riesce. La soluzione corretta sarebbe quella di abilitare l'indicazione del nome del server per Net::HTTP
, ma non mi è chiaro come farlo funzionare con i binding Ruby per OpenSSL. Qualcun altro ha un'idea?
Si dovrebbe essere in grado di vedere il problema eseguendo:
require 'open-uri'
open('https://gmail.com/.well-known/host-meta') { |f| f.read }
Ho anche creato un succo che presenta il problema utilizzando una precedente versione di curl e OpenSSL:
https://gist.github.com/7936ef38787092a22897
io sono tutto, ma convinto, dopo aver lavorato in questo tutto il giorno e alcuni di ieri , questo è un esercizio di futilità. Sono abbastanza sicuro che anche se riuscissi a far funzionare SNI, dovrei usare le patch di scimmia per farlo, creando uno scenario di distribuzione difficile. –
Esistono altre opzioni compatibili con Ruby per trattare questo tipo di problema? Ad esempio, Net :: HTTPS supporta 'subjectAltName'? –
Un'altra opzione proposta sarebbe scrivere la mia implementazione di 'post_connection_check' che ha verificato i nomi host rispetto a una lista bianca di mappature di nomi comuni. Se lo facessimo, ci sono implicazioni sulla sicurezza da considerare? –