ищу простой пример ssl erlang - PullRequest
0 голосов
/ 25 июля 2011

в книге «Программирование на Erlang» одно из предложенных упражнений состояло в том, чтобы напечатать на экране запрос, исходящий из браузера, используя gen_tcp. Я сделал это для http запросов следующим образом:

-module(tcp).
-export([server/0, wait_connect/2]).

server() ->
    {ok, ListenSocket} = gen_tcp:listen(1234, [binary, {active, false}]),
    wait_connect(ListenSocket,0).

wait_connect(ListenSocket, Count) ->
    {ok, Socket} = gen_tcp:accept(ListenSocket),
    spawn(?MODULE, wait_connect, [ListenSocket, Count+1]),
    get_request(Socket, [], Count).

get_request(Socket, BinaryList, Count) ->
    Request = gen_tcp:recv(Socket, 0),
    io:format("~p~n", [Request]).

Теперь мне интересно, как это можно сделать в случае запроса https.

Можете ли вы привести очень простой пример? или укажите мне какой-нибудь ресурс по книгам или онлайн?

спасибо, действительно

Ответы [ 2 ]

3 голосов
/ 25 июля 2011

Вот руководство пользователя для приложения Erlang SSL: Erlang - SSL Руководство пользователя

Руководство содержит также в главе API параграф об обновлении существующих подключений к SSL.

Что касается вашего кода, вы должны сделать что-то вроде:

  • на стороне сервера и клиента вы должны выдать: ssl:start()
  • на стороне сервера: рукопожатие SSL (не забудьте установить «активный» в false для сокета прослушивания)

    {ok, SSLSocket} = ssl:ssl_accept(Socket, [{cacertfile, "cacerts.pem"}, {certfile, "cert.pem"}, {keyfile, "key.pem"}]).

    где "cacerts.pem", "cert.pem", "key.pem" - это файлы, связанные с сертификацией SSL

  • на стороне клиента: обновить соединение до SSL: {ok, SSLSocket} = ssl:connect(Socket, [{cacertfile, "cacerts.pem"}, {certfile, "cert.pem"}, {keyfile, "key.pem"}], infinity).

Согласно документации, теперь SSLSocket - это канал ssl, который можно использовать для отправки сообщений, таких как: ssl:send(SSLSocket, "foo").

Надеюсь, это поможет!

1 голос
/ 04 июня 2012

Я бы предложил прочитать следующую статью о SSL-сокетах в Erang, которая содержит полный код SSL-эхо-сервера и клиента.

Пример использования сокетов Erlang SSL - ssl server & client)

...