ssl - 关于 erlang 套接字中的 {packet, PacketType}

标签 ssl erlang

我目前正在处理 SSL 套接字。我将其设置为:

{ok, LSocket} = ssl:listen(443, [{packet, http},
                         {reuseaddr, true},
                         {active, false},
                         {certfile, "mycert.pem"},
                         {keyfile, "mykey.pem"}]).

但是当我通过调用将套接字传递给另一个应该处理连接的进程时:

ssl:getopts(LSocket, [packet]).

我得到了:

{ok,[{packet,0}]}

代替:

{ok,[{packet,http}]

0 不是表示“原始数据包”吗?为什么会这样?

最佳答案

你自己编译过Erlang吗?可能你搞砸了加密模块。 尝试使用来自 Erlang Solutions 的预编译 15B02:https://www.erlang-solutions.com/downloads/download-erlang-otp

您演示的代码在传递给另一个进程时可以正常工作:

Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.2  (abort with ^G)
1> {ok, LSocket} = ssl:listen(9443, [{packet, http}, {reuseaddr, true}, {active, false}, {certfile, "priv/ssl/ssl.crt"}, {keyfile, "priv/ssl/ssl.key"}]).
{ok,{sslsocket,new_ssl,
               {#Port<0.719>,
                {config,{ssl_options,[],verify_none,
                                     {#Fun<ssl.1.38762831>,[]},
                                     false,false,undefined,1,<<"priv/ssl/ssl.crt">>,undefined,
                                     <<"priv/ssl/ssl.key">>,undefined,[],undefined,<<>>,
                                     undefined,undefined,
                                     [<<0,...>>,<<...>>|...],
                                     #Fun<ssl.0.38762831>,true,...},
                        [{packet,http},{reuseaddr,true},{active,false}],
                        {socket_options,list,http,0,0,false},
                        [{reuseaddr,true},
                         {packet_size,0},
                         {packet,0},
                         {header,0},
                         {active,false},
                         {mode,binary}],
                        {gen_tcp,tcp,tcp_closed,tcp_error}}}}}
2> 
2> ssl:getopts(LSocket, [packet]).
{ok,[{packet,http}]}
3> spawn(fun() -> ssl:getopts(LSocket, [packet]) end).
<0.42.0>
4> spawn(fun() -> error_logger:info_msg(ssl:getopts(LSocket, [packet])) end).
<0.44.0>
5> 
=INFO REPORT==== 1-Nov-2012::06:07:15 ===
ERROR: {ok,[{packet,http}]} - []

关于ssl - 关于 erlang 套接字中的 {packet, PacketType},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10301045/

相关文章:

ssl - WSO2 ESB Axis2 服务抛出主机名验证失败

c# - 无法从 X.509 存储获取当前用户证书

ssl - 在 Cpanel 上添加重定向 (301) 规则以强制 ssl 时出错

c - Erlang c-nodes 随机崩溃,并出现双重释放、内存损坏 malloc 消息

module - Elixir 重命名并包装 Erlang 模块?

ios - 使用 NSURLSession 固定公钥

Erlang:从共享队列中推送和拉取

function - Erlang 中的模块函数

erlang - 如果不指定节点名称,iex 和 erl 启动速度会非常慢

ssl - NGINX 不会监听 443 端口