I am trying to make a POST request via curl to a server that only supports TLS 1.2, TLS 1.1, and TLS 1.0. However, even when I try to specify the need for TLS instead of the default SSL v. 3 (adding ---tlsv1) I get the following response:

curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

This is the version of curl I am using:

curl 7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5

There are no firewall issues with resolving the URL.

How can I make the POST successful?

Update: I have tried also making the request with Python to try to figure out what the issue is. The URL is internal so I cannot share that, but help would be appreciated as to what might be the configuration issue. Here is the Python error:

urllib2.URLError: <urlopen error (1, 'error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure')>

  • What is the URL of the server you are attempting to connect to? If you don't provide it, then we can't help you trouble shoot it. We will probably have to close the question as "can't duplicate".
    – jww
    Jan 20, 2016 at 20:38

2 Answers 2


How can I make the POST successful?

Hard to tell what the issue is without knowing the exact URL. But given the version of curl your are using it might be that the server requires Server Name Indication (SNI) which is not supported by the old version of curl you are using.

  • I get the same error when making the request with Python. i.e., urllib2.URLError: <urlopen error (1, 'error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure')>
    – Jake
    Jan 20, 2016 at 14:25
  • @JakeWasdin: Changes are high that your python is also too old. SNI is support since Python 2.7.9 only. Jan 20, 2016 at 14:53

The "handshake" error indicates that the client and server could not agree on how to set up the secure channel requires for HTTPS. The version of OpenSSL you are using is very old, and only understands SSL up to sslv3, which the server requires as a minimum. Hence the "sslv3" error - it is informing you it tried to talk SSL v3 (which is less than TLS v1) and failed to get a meaningful response.

You're out of luck without an upgrade to a more recent version of OpenSSL, and even then the curl version may also need to be bumped to handle the newer TLS version too.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.