2010-01-08 49 views
2

我有一個連接到一個節點,並做一些RPC調用和東西有點escript文件...運行一個Erlang Escript文件使用SSL分佈

它工作正常的短期或longnames而是依賴於標準的HTTP通訊科的分佈式Erlang。

我想使用它,但使用https/SSL進行分發。

要開始使用SSL「正常」二郎系統,您必須在各種標誌傳遞給告訴二郎運行這種方式,作爲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之一(inet_ssl_dist)。

escript將erlang文件作爲shell腳本文件運行。

我的問題是:

  • 是有可能得到二郎神「環境」,其中escript運行使用安全的分配機制,而不是默認的一個嗎?
  • 如果是的話,我該怎麼做?

回答

3

您不必通過環境設置這些標誌,您也可以直接將它們傳遞給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()]). 

[email protected]:~$ ./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"]}] 
+0

一如以往佐爾坦 - 你的錢。我不知道我是如何錯過escript文檔中的那一行< - 該死的傻瓜! – 2010-01-09 09:38:46