寻找一个简单的 ssl erlang 示例

Posted

技术标签:

【中文标题】寻找一个简单的 ssl erlang 示例【英文标题】:Looking for a simple ssl erlang example 【发布时间】:2011-10-12 11:35:52 【问题描述】:

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 请求的情况下如何做到这一点。您能否提供一个非常简单的示例,或者指出一些书籍或在线资源?

【问题讨论】:

你能发布一些HTTP版本的代码吗? 【参考方案1】:

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

Erlang SSL sockets example - ssl server & client)

【讨论】:

【参考方案2】:

这是 Erlang SSL 应用程序的用户指南: Erlang -- SSL User Guide

该指南还在 API 章节中包含有关更新现有 SSL 连接的段落。

关于您的代码,您应该执行以下操作:

在服务器和客户端你必须发出: ssl:start()

服务器端:握手 SSL(记得将监听套接字的 'active' 设置为 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").

希望这会有所帮助!

【讨论】:

其实我尝试过这样的事情,但问题是我无法控制浏览器在做什么...... 对不起,@user601836,但我不明白要求:您需要在Http接口中集成ssl调用吗? AFAIK,使用上面的方法,您应该简单地将对象转移到您将请求从 Socket 发送到 SSLSocket。

以上是关于寻找一个简单的 ssl erlang 示例的主要内容,如果未能解决你的问题,请参考以下文章

在erlang中寻找“请求作为进程”的示例

配置 Erlang 以使用 SSL

简单的 Erlang 示例无法运行(错误)

Erlang:检查重复的插入元素

寻找一个非常简单的缓存示例

寻找一个简单的 Spring 安全示例 [关闭]