具有客户端ssl证书的Elixir SOAP(洗涤剂)

具有客户端ssl证书的Elixir SOAP(洗涤剂),soap,ssl-certificate,elixir,Soap,Ssl Certificate,Elixir,我们(我自己和我的开发团队)对Elixir比较陌生,尤其是在成功地将大部分API服务移植到Elixir并取得了很好的效果之后 然而,我们在连接到需要SSL客户端证书的上游SOAP Web服务时遇到了问题。包装器库清洁剂库似乎是唯一真正可用的用于消费web服务的库,但是我找不到在请求中使用客户端SSL证书的方法,这是我们的服务提供商所要求的 我们目前使用Python中的sud来实现这一点,然而,将其移植到Elixir将为这些特定请求的并行化带来巨大的好处 任何帮助都将不胜感激 看起来清洁剂本身不支

我们(我自己和我的开发团队)对Elixir比较陌生,尤其是在成功地将大部分API服务移植到Elixir并取得了很好的效果之后

然而,我们在连接到需要SSL客户端证书的上游SOAP Web服务时遇到了问题。包装器库清洁剂库似乎是唯一真正可用的用于消费web服务的库,但是我找不到在请求中使用客户端SSL证书的方法,这是我们的服务提供商所要求的

我们目前使用Python中的sud来实现这一点,然而,将其移植到Elixir将为这些特定请求的并行化带来巨大的好处


任何帮助都将不胜感激

看起来清洁剂本身不支持它,但它包装的Erlang库看起来会支持它

函数
洗涤剂:call
,一个
#call_选择{}
记录。此记录在中定义,并包含一个名为
http\u client\u options
的字段。在destinent.erl中,该记录最终被传递到两个HTTP客户端中的一个:它选择是否可用,并从内置inets应用程序中使用

对于httpc,您可以将SSL选项作为
http_client_options
中的
{SSL,[…]}
元组传递,而ibrowse希望元组是
{SSL_options,[…]}
,因此您需要知道要传递正确的选项将使用哪个http客户端清洗剂

中介绍了SSL选项。要设置客户端证书,请传递选项
{certfile,“/path/To/client.cert”}
{keyfile,“/path/To/client.key”}
。如果证书和私钥位于同一文件中,则可以省略
keyfile
选项


在洗涤剂中添加对该产品的支持并不难,或者,您可以直接从Elixir调用洗涤剂。

您最终实现了吗?我实现了部分功能,但Erlang中的洗涤剂库存在进一步的问题,阻止了Web服务的WSDL被使用,特别是Web服务有未包含的导入。最后,我将HTTPoison与Hackneye一起使用,并使用XML库显式解析XML。