Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang SSL服务器停止接受连接_Ssl_Erlang - Fatal编程技术网

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)
    +
    mysup:start\u child()
    它将启动一个新的gen_服务器来监听ListenSocket(在gen_服务器
    init()
    中,我有一个timeout==0,顺便说一句-使gen_服务器接收一个超时消息,该消息将通过
    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连接到该端口时,我都会看到“正在侦听…”消息(因为它会产生一个新的子节点来侦听传入的连接)。当我使用我的应用程序时,控制台上绝对不会出现任何消息。