# \[OT\] Does Net::HTTP support secure connections?

**URL:** <https://www.ruby-forum.com/t/ot-does-net-http-support-secure-connections/55891>\
**Category:** Rails\
**Created:** [March 24, 2006, 6:10pm UTC](https://www.ruby-forum.com/t/ot-does-net-http-support-secure-connections/55891 "2006-03-24T18:10:29Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![fbeausoleil](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ec9cab/32.png) [@fbeausoleil](https://www.ruby-forum.com/u/fbeausoleil)\
**Post date:** [March 24, 2006, 6:10pm UTC](https://www.ruby-forum.com/t/ot-does-net-http-support-secure-connections/55891/1 "2006-03-24T18:10:29Z")

</div>

Hi !

I’m trying to connect to an https URL, but it seems it doesn’t work.  
Has anyone successfully connected from Ruby to an HTTPS server ?

Thanks !

---

<div class="post-metadata">

**Author:** ![fbeausoleil](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ec9cab/32.png) [@fbeausoleil](https://www.ruby-forum.com/u/fbeausoleil)\
**Post date:** [March 24, 2006, 6:21pm UTC](https://www.ruby-forum.com/t/ot-does-net-http-support-secure-connections/55891/2 "2006-03-24T18:21:04Z")

</div>

yes it does.

require ‘net/http’  
require ‘net/https’

```
        h = Net::HTTP.new("www.google.com", 443)
        h.use_ssl = true
        resp, data = h.get("/", nil )
        @message = resp.message
        resp.code

```

Hope that helps.

---

<div class="post-metadata">

**Author:** ![fbeausoleil](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ec9cab/32.png) [@fbeausoleil](https://www.ruby-forum.com/u/fbeausoleil)\
**Post date:** [March 24, 2006, 8:17pm UTC](https://www.ruby-forum.com/t/ot-does-net-http-support-secure-connections/55891/3 "2006-03-24T20:17:21Z")

</div>

Hello Brian !

2006/3/24, Brian H. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> require ‘net/http’  
> require ‘net/https’
> 
> ```
> h = Net::HTTP.new("www.google.com", 443)
> h.use_ssl = true
> resp, data = h.get("/", nil )
> @message = resp.message
> resp.code
> 
> ```

Works like a charm. Thanks !

---

<div class="post-metadata">

**Author:** ![fbeausoleil](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ec9cab/32.png) [@fbeausoleil](https://www.ruby-forum.com/u/fbeausoleil)\
**Post date:** [March 24, 2006, 10:14pm UTC](https://www.ruby-forum.com/t/ot-does-net-http-support-secure-connections/55891/4 "2006-03-24T22:14:21Z")

</div>

A bit off topic, but why use Net::HTTP if you don’t have to. open-uri  
(in  
the standard library) is SOOOO much simpler:

require ‘open-uri’

open(“[https://www.google.com](https://www.google.com)”) do |f|  
@message = f.gets(nil)  
f.status # array of messages but same effect  
end

---

<div class="post-metadata">

**Author:** ![fbeausoleil](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ec9cab/32.png) [@fbeausoleil](https://www.ruby-forum.com/u/fbeausoleil)\
**Post date:** [March 24, 2006, 10:27pm UTC](https://www.ruby-forum.com/t/ot-does-net-http-support-secure-connections/55891/5 "2006-03-24T22:27:29Z")

</div>

Well, let’s see…

irb(main):030:0\> require ‘open-uri’  
=\> false  
irb(main):031:0\>  
irb(main):032:0\* open(“[https://www.google.com](https://www.google.com)”) do |f|  
irb(main):033:1\* @message = f.gets(nil)  
irb(main):034:1\> f.status # array of messages but same effect  
irb(main):035:1\> end  
OpenSSL::SSL::SSLError: certificate verify failed  
from c:/ruby/lib/ruby/1.8/net/http.rb:588:in `connect' from c:/ruby/lib/ruby/1.8/net/http.rb:588:in `connect’  
from c:/ruby/lib/ruby/1.8/net/http.rb:555:in `do_start' from c:/ruby/lib/ruby/1.8/net/http.rb:544:in `start’  
from c:/ruby/lib/ruby/1.8/open-uri.rb:245:in `open_http' from c:/ruby/lib/ruby/1.8/open-uri.rb:629:in `buffer\_open’  
from c:/ruby/lib/ruby/1.8/open-uri.rb:167:in `open_loop' from c:/ruby/lib/ruby/1.8/open-uri.rb:165:in `open\_loop’  
from c:/ruby/lib/ruby/1.8/open-uri.rb:135:in `open_uri' from c:/ruby/lib/ruby/1.8/open-uri.rb:531:in `open’  
from c:/ruby/lib/ruby/1.8/open-uri.rb:86:in `open’  
from (irb):32

That’s why I don’t use it! 🙂

Seriously, net/https warns of certificate issues but does not throw  
exceptions. Not every site has valid certificates and so I tend to  
always go  
the somewhat longer route.

---

<div class="post-metadata">

**Author:** ![fbeausoleil](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ec9cab/32.png) [@fbeausoleil](https://www.ruby-forum.com/u/fbeausoleil)\
**Post date:** [March 24, 2006, 10:34pm UTC](https://www.ruby-forum.com/t/ot-does-net-http-support-secure-connections/55891/6 "2006-03-24T22:34:56Z")

</div>

Good point, good point. I probably would have seen that if OpenSSL  
actually  
worked on Windows w/ 1.8.4 (or at least, with my one-click installer’s  
version of 1.8.4).

---

<div class="post-metadata">

**Author:** ![fbeausoleil](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ec9cab/32.png) [@fbeausoleil](https://www.ruby-forum.com/u/fbeausoleil)\
**Post date:** [March 24, 2006, 11:44pm UTC](https://www.ruby-forum.com/t/ot-does-net-http-support-secure-connections/55891/7 "2006-03-24T23:44:53Z")

</div>

On 3/24/06, Justin B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Good point, good point. I probably would have seen that if OpenSSL  
> actually worked on Windows w/ 1.8.4 (or at least, with my one-click  
> installer’s version of 1.8.4).

Have you submitted this as a bug to the instant rails team? The project  
site can be found at [http://rubyforge.org/projects/instantrails](http://rubyforge.org/projects/instantrails) . I’d  
highly suggest you submit any problems like this that you run into so  
that  
the team can get them fixed for the next release.

---

<div class="post-metadata">

**Author:** ![fbeausoleil](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ec9cab/32.png) [@fbeausoleil](https://www.ruby-forum.com/u/fbeausoleil)\
**Post date:** [March 25, 2006, 7:59am UTC](https://www.ruby-forum.com/t/ot-does-net-http-support-secure-connections/55891/8 "2006-03-25T07:59:56Z")

</div>

When I try it I get:

ArgumentError: open-uri doesn’t support https.  
from c:/ruby/lib/ruby/1.8/open-uri.rb:583:in `proxy_open' from c:/ruby/lib/ruby/1.8/open-uri.rb:525:in`direct\_open’  
from c:/ruby/lib/ruby/1.8/open-uri.rb:169:in `open_loop' from c:/ruby/lib/ruby/1.8/open-uri.rb:164:in`catch’  
from c:/ruby/lib/ruby/1.8/open-uri.rb:164:in `open_loop' from c:/ruby/lib/ruby/1.8/open-uri.rb:134:in`open\_uri’  
from c:/ruby/lib/ruby/1.8/open-uri.rb:424:in `open' from c:/ruby/lib/ruby/1.8/open-uri.rb:85:in`open’  
from (irb):10

But Net::HTTP worked fine.

b

(windoze w/ ruby 1.8.2 (2004-12-25) [i386-mswin32])

---

<div class="post-metadata">

**Author:** ![fbeausoleil](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ec9cab/32.png) [@fbeausoleil](https://www.ruby-forum.com/u/fbeausoleil)\
**Post date:** [March 25, 2006, 12:24am UTC](https://www.ruby-forum.com/t/ot-does-net-http-support-secure-connections/55891/9 "2006-03-25T00:24:07Z")

</div>

Done (its actually the one-click installer). Thanks for the reminder.
