Как добавить доверенный сертификат в HTTPPoison/hackney?
Когда я пытаюсь:
HTTPoison.get! "https://facebook.com"
Я получил:
** (HTTPoison.Error) {:tls_alert, 'unknown ca'}
[error] SSL: :certify: ssl_handshake.erl:1606:Fatal error: unknown ca
(httpoison) lib/httpoison.ex:66: HTTPoison.request!/5
что-то вроде ожидаемого, так как в моей компании мне нужно доверять сертификату брандмауэра, чтобы выйти.
Я доверял сертификату (файл.cer) по всей системе, поэтому wget
не дает мне ssl ошибок при доступе https
URL-адрес. Но похоже, что hackney/HTTPoison игнорирует эту конфигурацию.
Как заставить HTTPoison/hackney распознать сертификат как доверенный сертификат?
2 ответа
Пути к Cert-файлам передаются опциям HTToison, например:
defp add_certs do
[
hackney: [ # :hackney options
ssl_options: [ # :ssl options
cacertfile: # CA certificate used to validate server cert; path(), "string" is ok
certfile: # client certificate, signed by CA; path(), "string" is ok
keyfile: # private key for client.crt; path(). "string" is ok
password: # password for keyfile; string(), "string" not ok, use 'char list'
]
]
]
end
HTTPoison.post(url, request_xml, headers, add_certs)
Я недавно столкнулся с этой проблемой также. То, что работало для меня, передавало местоположение файла сертификата непосредственно hackney
как предложено разработчиком в этом билете:
opts = [{:ssl_options, [{:cacertfile, "/<path to my cert>/MyCertificates.pem"}]}]
HTTPoison.post(login, headers, hackney: opts)
В качестве альтернативы вы можете выполнить SSL-соединение без проверки сертификата (подробнее об опциях запроса здесь):
HTTPoison.post(login, headers, hackney: [:insecure])