diff --git a/Gemfile b/Gemfile
index 6d6958927282c875a78ba4b77dff5741cc50e157..288a90caf46c6207edf968939c14a44f54ca50bd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -24,6 +24,7 @@ end
 
 group :test do
   gem 'sqlite3', :platform => [:ruby, :mswin, :mingw]
+  gem 'webmock'
 
   platforms :ruby do
     gem 'pg'
diff --git a/lib/geocoder/lookups/base.rb b/lib/geocoder/lookups/base.rb
index eb398937bab3490f9aa5f28cc93cc80df660af30..ed9b946be095175856a0d7f3ff98c8737712e531 100644
--- a/lib/geocoder/lookups/base.rb
+++ b/lib/geocoder/lookups/base.rb
@@ -274,6 +274,7 @@ module Geocoder
         uri = URI.parse(query_url(query))
         Geocoder.log(:debug, "Geocoder: HTTP request being made for #{uri.to_s}")
         http_client.start(uri.host, uri.port, use_ssl: use_ssl?, open_timeout: configuration.timeout, read_timeout: configuration.timeout) do |client|
+          configure_ssl!(client) if use_ssl?
           req = Net::HTTP::Get.new(uri.request_uri, configuration.http_headers)
           if configuration.basic_auth[:user] and configuration.basic_auth[:password]
             req.basic_auth(
@@ -297,6 +298,8 @@ module Geocoder
         end
       end
 
+      def configure_ssl!(client); end
+
       def check_api_key_configuration!(query)
         key_parts = query.lookup.required_api_key_parts
         if key_parts.size > Array(configuration.api_key).size
diff --git a/lib/geocoder/lookups/google.rb b/lib/geocoder/lookups/google.rb
index d3ffeb74cfd84ca9b8c52b5fcede046d788e220b..8483f137869f0c6038dd6d5ccc12c02907d52665 100644
--- a/lib/geocoder/lookups/google.rb
+++ b/lib/geocoder/lookups/google.rb
@@ -27,6 +27,13 @@ module Geocoder::Lookup
 
     private # ---------------------------------------------------------------
 
+    def configure_ssl!(client)
+      client.instance_eval {
+        @ssl_context = OpenSSL::SSL::SSLContext.new
+        @ssl_context.set_params({:options=> OpenSSL::SSL::OP_NO_SSLv2 | OpenSSL::SSL::OP_NO_SSLv3 | OpenSSL::SSL::OP_NO_COMPRESSION})
+      }
+    end
+
     def valid_response?(response)
       json = parse_json(response.body)
       status = json["status"] if json
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 8ad22fc798c4f541acfeab13b8540fe72fba2bff..d0b6ca48924b90bcc0b67381fc4e5b40a376bd8c 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -120,6 +120,7 @@ module Geocoder
         fixture_exists?(filename) ? filename : default_fixture_filename
       end
 
+      alias_method :make_api_http_request, :make_api_request
       remove_method(:make_api_request)
 
       def make_api_request(query)
diff --git a/test/unit/lookup_test.rb b/test/unit/lookup_test.rb
index 5a91ad573596da1fbf2a8acda5b3772ff882a721..c4dbce1364cb7ed4fa5c36c511d990e1c6c648d8 100644
--- a/test/unit/lookup_test.rb
+++ b/test/unit/lookup_test.rb
@@ -160,4 +160,19 @@ class LookupTest < GeocoderTestCase
     assert_equal :google, Geocoder::Lookup::Google.new.handle
     assert_equal :geocoder_ca, Geocoder::Lookup::GeocoderCa.new.handle
   end
+
+  def test_http_request
+    Geocoder.configure(use_https: true)
+
+    require 'webmock/test_unit'
+    WebMock.enable!
+    stub_all = WebMock.stub_request(:any, /.*/).to_return(status: 200)
+
+    g = Geocoder::Lookup::Google.new
+    g.send(:make_api_http_request, Geocoder::Query.new('test location'))
+    assert_requested(stub_all)
+
+    WebMock.reset!
+    WebMock.disable!
+  end
 end