寻找一个简单的ssl erlang示例



Erlang Programming一书中提出的练习之一是使用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请求的情况下做到这一点。你能提供一个非常简单的例子,或者给我指出一些书籍或网上的资源吗?

以下是Erlang SSL应用的用户指南:Erlang——SSL用户指南

在API章节中,还包含了一段关于更新到SSL的现有连接的内容。

关于你的代码,你应该这样做:
  • 在服务器端和客户端你必须发出:ssl:start()
  • 服务器端:握手SSL(记住将监听套接字的'active'设置为false)

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

    除"的地方。"cert.pem","cert.pem","key. Pem"。

  • 客户端:升级SSL连接{ok, SSLSocket} = ssl:connect(Socket, [{cacertfile, "cacerts.pem"}, {certfile, "cert.pem"}, {keyfile, "key.pem"}], infinity).

根据文档,现在SSLSocket是一个ssl通道,可以用来发送这样的消息:ssl:send(SSLSocket, "foo").

希望这对你有帮助!

我建议阅读以下关于Erang中SSL套接字的文章,其中包含SSL回显服务器和客户端的完整代码。

Erlang SSL套接字示例- SSL server &客户端)

最新更新