Запуск файла Escript Erlang с распространением SSL

StackOverflow https://stackoverflow.com/questions/2030838

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть небольшой файл сценария, который подключается к узлу и выполняет некоторые вызовы RPC и прочее...

Он отлично работает с короткими и длинными именами, но для распределенного Erlang использует стандартные http-соединения.

Я хотел бы использовать его, но с https/SSL для распространения.

Чтобы запустить «нормальную» систему Erlang с SSL, вам необходимо передать различные флаги, чтобы 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).

сценарий запускает файл erlang как файл сценария оболочки.

Мои вопросы:

  • Можно ли получить «среду» Erlang, в которой запускается скрипт, для использования механизма безопасного распространения вместо механизма по умолчанию?
  • и если да, то как мне это сделать?
Это было полезно?

Решение

Вам не обязательно устанавливать эти флаги через среду, вы также можете передать их непосредственно erl, видеть гл.1.4 здесь. erl флаги могут быть переданы сценарий через %%! строка аргументов.


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"]}]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top