Una bella dimenticanza nel codice della libreria per la gestione delle connessioni web su protocollo sicuro Net:HTTPS, che controlla che il sito all’altro capo del filo presenti un certificato valido, ma dimentica di chiamare il metodo post_connection_check per verificare che il nome del sito corrisponda al certificato.
La conseguenza è che non viene rilevato un sito con un certificato formalmente valido, ma non congruo con il nome nel Dns.
Gli utenti di Ruby possono trovare una patch sul sito dedicato al linguaggio.
Il codice di collegamento dovrebbe essere modificato come segue:
http = Net::HTTP.new(host, 443)
http.use_ssl = true
http.enable_post_connection_check = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
store = OpenSSL::X509::Store.new
store.set_default_paths
http.cert_store = store
http.start {
response = http.get("/")
}