【问题标题】:Running An Erlang Escript File With SSL Distribution使用 SSL 分发运行 Erlang Escript 文件
【发布时间】:2010-01-08 21:22:52
【问题描述】:

我有一个小的 escript 文件,它连接到一个节点并执行一些 rpc 调用和其他操作...

它适用于短名称或长名称,但依赖于分布式 Erlang 的标准 http 通信。

我想使用它,但要使用 https/SSL 进行分发。

documentation 建议的那样,要使用 SSL 启动一个“正常”的 Erlang 系统,您必须传入各种标志来告诉 Erlang 以这种方式运行:

$ ERL_FLAGS="-boot \"/home/me/ssl/start_ssl\" -proto_dist inet_ssl 
  -ssl_dist_opt client_certfile \"/home/me/ssl/erlclient.pem\" 
  -ssl_dist_opt server_certfile \"/home/me/ssl/erlserver.pem\" 
  -ssl_dist_opt verify 1 -ssl_dist_opt depth 1"
$ export ERL_FLAGS
$ erl -sname ssl_test

这将默认分发机制 (inet_tcp_dist) 替换为 ssl (inet_ssl_dist)。

escript 将 erlang 文件作为 shell 脚本文件运行。

我的问题是:

  • 是否可以让运行 escript 的 Erlang“环境”使用安全分发机制而不是默认机制?
  • 如果是这样,我该怎么做?

【问题讨论】:

    标签: erlang erlang-escript


    【解决方案1】:

    您不必通过环境设置这些标志,您也可以直接将它们传递给erl,请参阅ch. 1.4 hereerl 标志可以通过 %%! 参数行传递给 escript


    z.escript

    #!/usr/bin/env escript
    %%! -boot start_ssl -proto_dist inet_ssl -ssl_dist_opt client_certfile /home/me/ssl/erlclient.pem -ssl_dist_opt server_certfile /home/me/ssl/erlserver.pem -ssl_dist_opt verify 1 -ssl_dist_opt depth 1
    main(_) ->
        io:format("~p~n", [init:get_arguments()]).
    

    zed@zed:~$ ./z.escript 
    [{root,["/opt/erlang-R13B03/lib/erlang"]},
     {progname,["erl"]},
     {home,["/home/zed"]},
     {boot,["start_clean"]},
     {noshell,[]},
     {boot,["start_ssl"]},
     {proto_dist,["inet_ssl"]},
     {ssl_dist_opt,["client_certfile","/home/me/ssl/erlclient.pem"]},
     {ssl_dist_opt,["server_certfile","/home/me/ssl/erlserver.pem"]},
     {ssl_dist_opt,["verify","1"]},
     {ssl_dist_opt,["depth","1"]}]
    

    【讨论】:

    • 一如既往的 Zoltan - 你有钱了。我不知道我是如何错过 escript 文档中的那一行
    猜你喜欢
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2020-09-12
    • 2017-05-30
    • 1970-01-01
    • 2021-11-26
    • 2014-12-02
    • 2016-11-30
    相关资源
    最近更新 更多