寻找一个简单的 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 示例的主要内容,如果未能解决你的问题,请参考以下文章