带有客户端 ssl 证书的 Elixir SOAP (detergentex)
Elixir SOAP (detergentex) with client ssl certificate
我们(我自己和我的开发团队)对 Elixir 比较陌生,尤其是在成功地将我们的 API 服务的大部分移植到 Elixir 并取得了很好的效果之后。
但是,我们在连接到需要 SSL 客户端证书的上游 SOAP WebService 时遇到了问题。包装库 detergentex 似乎是唯一真正可用的用于使用 Web 服务的库,但是我找不到在请求中使用客户端 SSL 证书的方法,这是我们的服务所需要的提供商。
我们目前在 Python 中使用 SUDS 来实现这一点,但是移植到 Elixir 将为这些特定请求的并行化带来巨大的好处。
如有任何帮助,我们将不胜感激!
似乎 detertexex 本身不支持它,但它包装的 Erlang 库 detergent 看起来会支持它。
来自内置 inets 应用程序的函数 detergent:call
can be called with an optional fourth argument, a #call_opts{}
record. This record is defined in detergent.hrl and contains a field called http_client_options
. In detergent.erl, this record eventually ends up being passed to one of two HTTP clients: it chooses ibrowse if that's available, and otherwise uses httpc。
对于 httpc,您可以将 SSL 选项作为 http_client_options
中的 {ssl, [...]}
元组传递,而 ibrowse 期望该元组为 {ssl_options, [...]}
,因此您需要知道哪个 HTTP 客户端清洁剂将使用以传递正确的选项。
ssl man page 中描述了 SSL 选项。要设置客户端证书,请传递选项 {certfile, "/path/to/client.cert"}
和 {keyfile, "/path/to/client.key"}
。如果证书和私钥在同一个文件中,可以省略keyfile
选项。
将对此的支持添加到 degreetex 应该不难,或者您可以直接从 Elixir 调用 detergent。
我们(我自己和我的开发团队)对 Elixir 比较陌生,尤其是在成功地将我们的 API 服务的大部分移植到 Elixir 并取得了很好的效果之后。
但是,我们在连接到需要 SSL 客户端证书的上游 SOAP WebService 时遇到了问题。包装库 detergentex 似乎是唯一真正可用的用于使用 Web 服务的库,但是我找不到在请求中使用客户端 SSL 证书的方法,这是我们的服务所需要的提供商。
我们目前在 Python 中使用 SUDS 来实现这一点,但是移植到 Elixir 将为这些特定请求的并行化带来巨大的好处。
如有任何帮助,我们将不胜感激!
似乎 detertexex 本身不支持它,但它包装的 Erlang 库 detergent 看起来会支持它。
来自内置 inets 应用程序的函数 detergent:call
can be called with an optional fourth argument, a #call_opts{}
record. This record is defined in detergent.hrl and contains a field called http_client_options
. In detergent.erl, this record eventually ends up being passed to one of two HTTP clients: it chooses ibrowse if that's available, and otherwise uses httpc。
对于 httpc,您可以将 SSL 选项作为 http_client_options
中的 {ssl, [...]}
元组传递,而 ibrowse 期望该元组为 {ssl_options, [...]}
,因此您需要知道哪个 HTTP 客户端清洁剂将使用以传递正确的选项。
ssl man page 中描述了 SSL 选项。要设置客户端证书,请传递选项 {certfile, "/path/to/client.cert"}
和 {keyfile, "/path/to/client.key"}
。如果证书和私钥在同一个文件中,可以省略keyfile
选项。
将对此的支持添加到 degreetex 应该不难,或者您可以直接从 Elixir 调用 detergent。