Erlang SSL服务器停止接受连接
设置:Erlang SSL服务器停止接受连接,ssl,erlang,Ssl,Erlang,设置: 具有两个Erlang节点、不同名称、相同SSL设置(证书、密钥、权限)的Erlang群集 两个节点正在侦听同一端口上的连接 接受方案很简单,前面没有接受池:ListenSocket=ssl:listen()当应用程序启动时->然后,在子项中,我做AcceptSock=ssl:transport\u accept(ListenSocket)+ssl:ssl\u accept(AcceptSock)+mysup:start\u child()它将启动一个新的gen_服务器来监听Listen
- 具有两个Erlang节点、不同名称、相同SSL设置(证书、密钥、权限)的Erlang群集
- 两个节点正在侦听同一端口上的连接
- 接受方案很简单,前面没有接受池:
当应用程序启动时->然后,在子项中,我做ListenSocket=ssl:listen()
+AcceptSock=ssl:transport\u accept(ListenSocket)
+ssl:ssl\u accept(AcceptSock)
它将启动一个新的gen_服务器来监听ListenSocket(在gen_服务器mysup:start\u child()
中,我有一个timeout==0,顺便说一句-使gen_服务器接收一个超时消息,该消息将通过init()
来处理,它执行上述接受方案)李>handle_info(timeout…
- 我希望所有这些都能一直奏效:)
- 有时,一台或两台服务器停止接受来自iOS应用程序的ssl连接。到该端口的telnet可以工作-它甚至可以传递transport_accept()李>
- 从iOS应用程序中,我得到了一个“SSLHandshake失败,错误-9806”,看起来transport_accept()没有成功(我在那一行前后都有错误日志记录,我在日志中没有看到任何错误消息-理论上,看起来iOS应用程序没有尝试连接到该端口,但它确实尝试了,因为它说SSLHandshake失败了)
- 我遵循了-并得到了以下信息:
openssl s_client -connect myserver:4321 -servername myserver -ssl3 -tls1 -prexit CONNECTED(00000003) write:errno=60 --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 0 bytes and written 0 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : 0000 Session-ID: Session-ID-ctx: Master-Key: Key-Arg : None Start Time: 1460057622 Timeout : 7200 (sec) Verify return code: 0 (ok) ---
- 使用第二台服务器(仍在接受连接)执行的同一命令返回了更多信息,并且没有超时
非常感谢您的帮助。
-ssl3-tls1
没有任何意义,因为第一个尝试实施SSL 3.0,第二个尝试实施TLS 1.+,这意味着只能使用其中一个选项。此外,将-servername
与-ssl3
组合将无法工作,因为servername需要SNI扩展,而SSL无法提供SNI扩展3.0我尝试了所有的组合,但这是唯一一个实际返回内容的组合,其余部分超时。openssl命令的输出与我在服务器上尝试立即关闭连接时得到的结果相同(nc-l 4321在我的代码中,我有:lager:info(“侦听:~p:~p~n”,[?文件,行]),{ok,AcceptSock}=ssl:transport_-accept(LSock),lager:info(“在ssl_-accept之前获得新套接字”),
当我进行telnet时-每次我通过telnet连接到该端口时,我都会看到“正在侦听…”消息(因为它会产生一个新的子节点来侦听传入的连接)。当我使用我的应用程序时,控制台上绝对不会出现任何消息。