Erlang SSL服务器停止接受连接

时间:2016-04-07 20:27:15

标签: ssl erlang

  1. 设置:

    • 具有两个Erlang节点,不同名称,相同SSL设置(证书,密钥,权限)的Erlang集群
    • 两个节点正在侦听同一端口上的连接
    • 接受方案很简单,并且在应用程序启动时没有前面的接受器池:ListenSocket = ssl:listen() - >然后,在孩子们中,我做AcceptSock = ssl:transport_accept(ListenSocket) + ssl:ssl_accept(AcceptSock) + mysup:start_child()这将启动一个新的gen_server来监听ListenSocket(在gen_server init()我有超时== 0 ,顺便说一句 - 使gen_server收到一条超时消息,该消息将由执行上述接受方案的handle_info(timeout...)处理。
  2. 预期行为:

    • 我希望所有这些都能一直工作:)
  3. 观察到的行为:

    • 有时,一台或两台服务器停止接受来自iOS应用连接 。 telnet到该端口工作 - 它甚至传递transport_accept()。
    • 从iOS应用程序,我得到一个“SSLHandshake失败,错误-9806”,它看起来不像transport_accept()成功(我在该行之前和之后有错误记录,我没有看到任何错误消息打印在日志中 - 从理论上讲,看起来iOS应用程序并没有尝试连接到该端口,但它确实尝试过,因为它说SSLHandshake失败了)。
    • 我跟着this thread - 并得到了以下内容:

      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)
      ---
      
    • 与第二台服务器(仍在接受连接)执行的相同命令返回了更多的信息并且没有超时。

  4. 感谢任何帮助,谢谢。

0 个答案:

没有答案