Elixir SOAP(detergentex)与客户端ssl证书

时间:2016-06-10 08:03:52

标签: soap ssl-certificate elixir

我们(我自己和我的开发团队)对Elixir来说相对较新,特别是在成功将大部分API服务移植到Elixir之后,效果非常好。

但是,我们在连接到需要SSL客户端证书的上游SOAP WebService时遇到问题。包装程序库 detergentex 似乎是唯一可用于使用Web服务的可用库,但是我找不到在请求中使用客户端SSL证书的方法,这是我们的服务提供商所要求的。< / p>

我们目前在Python中使用SUDS来实现这一目标,但是移植到Elixir将为这些特定请求的并行化带来巨大好处。

任何帮助都会受到大力赞赏!

1 个答案:

答案 0 :(得分:2)

似乎Detergentex本身不支持它,但它包装的Erlang库detergent看起来会支持它。

功能detergent:call can be called with an optional fourth argument#call_opts{}记录。此记录在detergent.hrl中定义,并包含一个名为http_client_options的字段。在detergent.erl中,此记录最终会被传递给两个HTTP客户端之一:如果可用,则选择ibrowse,否则使用内置inets应用程序中的httpc

对于httpc,您可以在{ssl, [...]}中将SSL选项作为http_client_options元组传递,而ibrowse期望元组为{ssl_options, [...]},因此您需要知道将使用哪个HTTP客户端清洁剂为了通过正确的选择。

ssl man page中描述了SSL选项。要设置客户端证书,请传递选项{certfile, "/path/to/client.cert"}{keyfile, "/path/to/client.key"}。如果证书和私钥位于同一文件中,则可以省略keyfile选项。

将此支持添加到Detergentex并不难,或者您可以直接从Elixir调用洗涤剂。