karang
HTTPoison post request Handshake Failure
I am getting the following error:
iex(16)> HTTPoison.post("https://myserver.com/api/v1.1.0/login",'{ "username": "myusername","password": "somepassword,"port": "80"}',[hackney: [ssl: [cacertfile: '/usr/local/share/ca-certificates/extra/RootCA.crt']]])
14:54:26.183 [info] TLS :client: In state :hello received SERVER ALERT: Fatal - Handshake Failure
{:error,
%HTTPoison.Error{
id: nil,
reason: {:tls_alert,
{:handshake_failure,
'TLS client: In state hello received SERVER ALERT: Fatal - Handshake Failure\n '}}
}}
We have a local RootCA.crt file which I have added to the OS and makes it so I can make a request with no problems. I am able to make this request in postman as well as from Python but not in Elixir. Perhaps my syntax is wrong or I don’t understand ssl properly (that’s definitely true!). This server is not accessible to the internet. I can provide more information if necessary. Thanks for any help!
Marked As Solved
karang
I solved this problem today like this:
HTTPoison.post("http://myserver.com/api/v1.1.0/login",'{ "username": "myusername","password": "somepassword,"port": "80"}',hackney: [:insecure])
I passed the insecure option to hackney and changed the https to http. I know this is not recommended but I need to login and I don’t have access to the SSL settings on the server.
Also Liked
akash-akya
lucaong
Not sure this is the actual issue, but the HTTPoison README does not use the atom :hackney in the SSL options:
url = "https://example.org/api/endpoint_that_needs_client_cert"
options = [ssl: [certfile: "certs/client.crt"]]
{:ok, response} = HTTPoison.post(url, [], options)
Even when passing a :cacertfile, it seems to be passed directly under :ssl: httpoison/test/httpoison_test.exs at 19f04da7949bf32141b8c3ff354e260542e4dd52 · edgurgel/httpoison · GitHub
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #hex
- #security









