SSL 배포판으로 Erlang escript 파일을 실행합니다
-
19-09-2019 - |
문제
노드에 연결하고 rpc 호출 및 물건을 수행하는 작은 ESCRIP 파일이 있습니다 ...
짧거나 긴 이름에 적합하지만 분산 Erlang의 표준 HTTP 통신에 의존합니다.
사용하고 싶지만 분포를 위해 HTTPS/SSL과 함께 사용하고 싶습니다.
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 파일을 쉘 스크립팅 파일로 실행합니다.
내 질문은 다음과 같습니다.
- ESCRIP가 기본 분배 메커니즘 대신 보안 분포 메커니즘을 사용하기 위해 실행되는 Erlang 'Environment'를 얻을 수 있습니까?
- 그렇다면 어떻게해야합니까?
해결책
환경을 통해이 깃발을 설정할 필요가 없으며 직접 전달할 수도 있습니다. erl
, 보다 ch. 1.4 여기. erl
깃발을 전달할 수 있습니다 escript TH를 통해 %%!
인수 라인.
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"]}]
제휴하지 않습니다 StackOverflow