Requests fails to fetch a TLS 1.2 site

# The problem

I have been trying to make a GET request to https://service.isracard.co.il/I_logon.jsp using requests.
The site seems to have a valid SSL certificate (see screenshots below), and cURL can get the content without a problem.

However, requests fails to fetch the site with a `sslv3 alert handshake failure` error.
# Notes
- I have asked [a stackoverflow question about this problem](https://stackoverflow.com/questions/32650984/why-does-python-requests-ignore-the-verify-parameter)
- The original problem happened when I was using mechanize, which uses `requests` internally.
- The problem happens both on OSX and Ubuntu 14.04.
- The same call worked for me a few months ago. I assume that the server side was somehow changed.
- SSL connections to other sites (e.g. github) work fine.
# Stack Trace

```
>>> import requests
>>> LOGIN_URL = 'https://service.isracard.co.il/I_logon.jsp'
>>> requests.get(LOGIN_URL)
/tmp/blahenv/local/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/tmp/blahenv/local/lib/python2.7/site-packages/requests/api.py", line 69, in get
    return request('get', url, params=params, **kwargs)
  File "/tmp/blahenv/local/lib/python2.7/site-packages/requests/api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "/tmp/blahenv/local/lib/python2.7/site-packages/requests/sessions.py", line 465, in request
    resp = self.send(prep, **send_kwargs)
  File "/tmp/blahenv/local/lib/python2.7/site-packages/requests/sessions.py", line 573, in send
    r = adapter.send(request, **kwargs)
  File "/tmp/blahenv/local/lib/python2.7/site-packages/requests/adapters.py", line 431, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [Errno 1] _ssl.c:510: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
```
# Certificate

![screen shot 2015-09-18 at 14 56 51](https://cloud.githubusercontent.com/assets/1014189/9958737/98ac65be-5e15-11e5-9229-c035c328ec64.png)
![screen shot 2015-09-18 at 14 23 51](https://cloud.githubusercontent.com/assets/1014189/9958744/a04e6574-5e15-11e5-8966-43a52c518daa.png)


Have you tried the approach suggested in [this blog post](https://lukasa.co.uk/2013/01/Choosing_SSL_Version_In_Requests/)?


So I took a quick look

```
$ openssl version
OpenSSL 1.0.2d 9 Jul 2015
$ openssl s_client -connect service.isracard.co.il:443 -no_ssl2 -no_ssl3 -no_tls1 -no_tls1_1
# Works
$ openssl s_client -connect service.isracard.co.il:443 -no_tls1_2
# Works
$ openssl s_client -connect service.isracard.co.il:443 -no_tls1_2 -no_tls1_1
# Works
$ openssl s_client -connect service.isracard.co.il:443 -no_tls1_2 -no_tls1_1 -no_tls1
# Fails
```

So using something like what @Lukasa has suggested should work. Note: the adapter that @Lukasa references in his blog post is also available in the [requests-toolbelt](https://toolbelt.readthedocs.org/en/latest/adapters.html#ssladapter).


@Lukasa @sigmavirus24 Thanks a bunch for the advice! I've used the adapters, and:
- Python code works on Ubuntu machines but fails with `SSLV3_ALERT_HANDSHAKE_FAILURE` on OSX
- `openssl s_client -connect service.isracard.co.il:443 -no_ssl2 -no_ssl3 -no_tls1 -no_tls1_1` works on the OSX machine, with `OpenSSL 1.0.2d 9 Jul 2015`

It's probably out of the  `requests` scope, but any idea how to fix this on OSX? The obvious solution seems to be upgrading openSSL version, but it's already upgraded to a pretty new version. Is Python using the same OpenSSL binaries as the command line tools, or is there a way to upgrade the libraries to a working version?


@adamatan well that depends on how you've installed Python on OSX. If you used brew and installed that after installing OpenSSL 1.0.2d then Python _should_ be using that. You can check that with 

```
$ python -c 'import ssl; print(ssl.OPENSSL_VERSION)'
```

Since that's the case, I'm going to close this. Feel free to pop into IRC for better help debugging your OpenSSL problems.