title: Python Requests requests.exceptions.SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol
body: <p>I'm on Ubuntu 12.10 with OpenSSL 1.0.1c, python 2.7.3, <a href="http://www.python-requests.org/en/latest/">Requests</a> 1.0.3 and 1.0.4 (tried both), and when attempting to connect to the website in the url variable with the following code.</p>
  
  <pre><code>def SendInitialRequest(xmlmessage, redirecturl):
      url = 'https://centineltest.cardinalcommerce.com/maps/txns.asp'
  
      payload = 'cmpi_msg=' + ET.tostring(xmlmessage)
      headers = {
          'Content-Type': 'application/x-www-form-urlencoded',
      }
      r = requests.post(url, data=payload, headers=headers, verify=None)
      print r.text
  </code></pre>
  
  <p>It throws the following error:</p>
  
  <pre><code>Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "clams/libs/centinel/thinclient.py", line 134, in SendInitialRequest
      r = requests.post(url, data=payload, headers=headers, verify=None)
    File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/api.py", line 87, in post
      return request('post', url, data=data, **kwargs)
    File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/api.py", line 44, in request
      return session.request(method=method, url=url, **kwargs)
    File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/sessions.py", line 269, in request
      resp = self.send(prep, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)
    File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/sessions.py", line 364, in send
      r = adapter.send(request, **kwargs)
    File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/adapters.py", line 163, in send
      raise SSLError(e)
  requests.exceptions.SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol
  </code></pre>
  
  <p>Attempting the connection with openssl returns the following:</p>
  
  <pre><code>$ openssl s_client -connect centineltest.cardinalcommerce.com:443
  CONNECTED(00000003)
  140019346777760:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:
  ---
  no peer certificate available
  ---
  No client certificate CA names sent
  ---
  SSL handshake has read 0 bytes and written 226 bytes
  ---
  New, (NONE), Cipher is (NONE)
  Secure Renegotiation IS NOT supported
  Compression: NONE
  Expansion: NONE
  ---
  </code></pre>
  
  <p>If I force it to use tls1 it works (output truncated):</p>
  
  <pre><code>$ openssl s_client -tls1 -connect centineltest.cardinalcommerce.com:443
  CONNECTED(00000003)
  depth=2 C = US, O = "thawte, Inc.", OU = Certification Services Division, OU
  verify error:num=20:unable to get local issuer certificate
  verify return:0
  ---
  </code></pre>
  
  <p>I've seen numerous <a href="https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371">bug reports</a> for this; however, I've not found a way to get around it using the python requests library.  Any assistance would be greatly appreciated.</p>