Server Name Indication support in Net::HTTP?
For SNI support, you need a newer OpenSSL release (0.9.8f with --enable-tlsext
or 0.9.8j or later) and call OpenSSL::SSL::SSLSocket#hostname = 'hostname'
before SSLSocket#connect
. Net::HTTPS
does not support SNI yet, and open-uri doesn't.
Checking out httpclient development repository should support SNI.
- https://github.com/nahi/httpclient
Let me know if you need released gem real soon now...
Ruby 2.0 will address the TLS SNI (Server Name Indication) issue:
from net/http..
# ...
# s.session = @ssl_session if @ssl_session
# # Server Name Indication (SNI) RFC 3546
# s.hostname = @address if s.respond_to? :hostname=
# Timeout.timeout(@open_timeout, Net::OpenTimeout) { s.connect }
# if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE
# s.post_connection_check(@address)
# end
# ...
To make this work in 1.9.2 (or higher ) apply similar patch to net/http
# ...
# BEGIN: SNI PATCH http://bugs.ruby-lang.org/issues/4351
# s.hostname = @address if s.respond_to? :hostname=
# END: SNI PATCH http://bugs.ruby-lang.org/issues/4351
# timeout(@open_timeout) { s.connect }
# if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE
# s.post_connection_check(@address)
# end
# ...
see also: http://bugs.ruby-lang.org/issues/4351 http://en.wikipedia.org/wiki/Server_Name_Indication