代码之家  ›  专栏  ›  技术社区  ›  Gordon Guthrie

使用ssl分发运行erlang esccript文件

  •  2
  • Gordon Guthrie  · 技术社区  · 15 年前

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

    对于短名称或长名称,它可以正常工作,但对于分布式Erlang,它依赖于标准的HTTP通信。

    我想使用它,但要与https/ssl一起分发。

    要用ssl启动一个“正常”的erlang系统,您必须传入各种标志,告诉erlang以这种方式运行,如 documentation 建议:

    $ 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-one( inet_ssl_dist )。

    escript 以shell脚本文件的形式运行erlang文件。

    我的问题是:

    • 是否可以让运行esccript的erlang“environment”使用安全分发机制而不是默认分发机制?
    • 如果是,我该怎么做?
    1 回复  |  直到 10 年前
        1
  •  3
  •   Zed    15 年前

    您不必通过环境设置这些标志,也可以直接将它们传递给 erl ch. 1.4 here . 厄尔 标志可以传递给 escript 通过 %%! 自变量行


    Z.E. Script

    #!/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"]}]
    
    推荐文章