即使在通过不安全的选项

时间:2016-02-06 00:53:12

标签: ssl erlang elixir

我试图调用我正在使用Hackney开发的API。

此API是一个rails应用程序,用于开发我使用nginx和passenger来提供服务,我使用etcd_ca生成了CA证书和主机证书。我已经在我的linux框中安装了CA证书,并且没有关于证书的curl,chrome或firefox投诉。

但是当我尝试向Hackney提出请求时,我收到了这个错误:

hackney:request(Method, Uri, Headers, Body, [insecure]).


18:43:15.720 [error] SSL: :certify: ssl_handshake.erl:415:Fatal error: certificate unknown

** (MatchError) no match of right hand side value: {:error, {:tls_alert, 'certificate unknown'}}
    (omnitutor_rt) lib/omnitutor_rt/api_client.ex:49: OmnitutorRT.APIClient.request/3
    (omnitutor_rt) lib/omnitutor_rt/api_client.ex:7: OmnitutorRT.APIClient.get_session/2

在分期和开发方面,我有一个有效的证书。

我正在运行Arch Linux,Elixir 1.2和Erlang 18。

Erlang/OTP 18 [erts-7.2.1] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Linux 4.4.1-2-ARCH #1 SMP PREEMPT Wed Feb 3 13:12:33 UTC 2016 x86_64 GNU/Linux

etcd-ca使用此模板生成证书:

https://github.com/coreos/etcd-ca/blob/master/Documentation/certificate_template.md

这可能是相关的吗? http://bugs.erlang.org/browse/ERL-33

1 个答案:

答案 0 :(得分:0)

查看此错误,我们有一个文件名和行号:

ssl_handshake.erl:415:Fatal error: certificate unknown

reading the source我们发现当发现错误时会发生这种情况,来自ssl_certificate:trusted_cert_and_pathpublic_key:pkix_path_validation。不幸的是,我们无法看到实际的错误信息。

找出问题的最佳方法可能是追踪这两个功能。这是你在Erlang shell中输入的内容; Elixir版本应该类似:

%% start the tracer
dbg:tracer().
%% trace function _c_alls for _all_ processes
dbg:p(all,c).
%% add a _t_race _p_attern for the relevant functions,
%% and look for e_x_ceptions
dbg:tp(ssl_certificate, trusted_cert_and_path, x).
dbg:tp(public_key, pkix_path_validation, x).