首页 > 解决方案 > Elixir HTTPoison 得到 handshake_failure

问题描述

这是我的卷曲请求

`curl --insecure --location --request POST 'url' --header 'Content-Type: application/json' --data-raw '{
  "client_id": "test"
}'

这很好用!

现在这是我的长生不老药请求

HTTPoison.post("url", request, ssl: [verify: :verify_none])

在这里我收到错误

    {:error,
 %HTTPoison.Error{
   id: nil,
   reason: {:tls_alert,
    {:handshake_failure,
     'TLS client: In state certify at ssl_handshake.erl:1783 generated CLIENT ALERT: Fatal - Handshake Failure\n {bad_cert,unable_to_match_altnames}'}}
 }}

`

标签: curlelixirhttpoison

解决方案


您可以尝试强制 ssl 到tlsv1.2.

HTTPoison.post("url", request, ssl: [versions: [:"tlsv1.2"]])

如果这不起作用,请尝试删除ssl密钥和/或如果您正在使用hackney,您可以尝试使用insecure选项进行配置。

HTTPoison.post("url", request)

HTTPoison.post("url", request, [hackney: [:insecure]])

HTTPoison.post("url", request, [ssl: [versions: [:"tlsv1.2"]], hackney: [:insecure]])

顺便问一下,您使用的是哪个版本的 Erlang?

这里讨论了第一个建议。


推荐阅读