dio*_*ovk 7 erlang ssl elixir httpoison
当我尝试:
HTTPoison.get! "https://facebook.com"
Run Code Online (Sandbox Code Playgroud)
我明白了:
** (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
Run Code Online (Sandbox Code Playgroud)
这是预期的,因为在我的公司,我需要相信防火墙的证书出来.
我信任系统范围内的证书(.cer文件),这就是为什么wget
在访问https
URL 时不会给我ssl错误.但似乎hackney/HTTPoison忽略了这种配置.
如何让HTTPoison/hackney将证书识别为可信证书?
小智 5
我最近也遇到了这个问题。对我有用的hackney
是按照开发人员在此票证中的建议将证书文件的位置直接传递给:
opts = [{:ssl_options, [{:cacertfile, "/<path to my cert>/MyCertificates.pem"}]}]
HTTPoison.post(login, headers, hackney: opts)
Run Code Online (Sandbox Code Playgroud)
或者,您可以在不检查证书的情况下执行 SSL 连接(更多关于这里的请求选项):
HTTPoison.post(login, headers, hackney: [:insecure])
Run Code Online (Sandbox Code Playgroud)
小智 5
证书文件路径被传递给 HTTPoison 选项,如下所示:
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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1764 次 |
最近记录: |