You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Corda 1.0重新部署带已有数据的节点启动时出现SSL握手超时错误

Corda 1.0节点带已有数据重启出现AMQ214016 SSL握手超时但功能正常的问题

问题场景

我目前仍在使用Corda 1.0版本,尝试重新部署带有已有数据的节点时,启动阶段出现如下错误,但仍能正常访问节点。若清空数据后重新部署节点,则不会出现此类错误。

错误日志详情:

Logs can be found in : C:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\kotlin-source\build\nodes\xxxxxxxxx\logs 
Database connection url is : jdbc:h2:tcp://xxxxxxxxx/node 
E 18:38:46+0530 [main] core.client.createConnection - AMQ214016: Failed to create netty connection 
javax.net.ssl.SSLException: handshake timed out 
at io.netty.handler.ssl.SslHandler.handshake(...)(Unknown Source) ~[netty-all-4.1.9.Final.jar:4.1.9.Final] 
Incoming connection address : xxxxxxxxxxxx 
Listening on port : 10014 
RPC service listening on port : 10015 
Loaded CorDapps : corda-finance-1.0.0, kotlin-source-0.1, corda-core-1.0.0 
Node for "xxxxxxxxxxx" started up and registered in 213.08 sec 
Welcome to the Corda interactive shell. Useful commands include 'help' to see what is available, and 'bye' to shut down the node. 
Wed May 23 18:39:20 IST 2018>>> 
E 18:39:24+0530 [Thread-6 (ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$3@4a532271)] core.client.createConnection - AMQ214016: Failed to create netty connection 
javax.net.ssl.SSLException: handshake timed out 
at io.netty.handler.ssl.SslHandler.handshake(...)(Unknown Source) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]

问题分析

这个错误是Corda底层依赖的ActiveMQ Artemis消息中间件在建立内部SSL连接时握手超时导致的。节点能正常访问是因为核心业务服务已经完成初始化,这个超时只影响了Artemis的部分内部连接,暂时不干扰核心功能。而清空数据后恢复正常,说明问题和节点本地存储的旧连接状态、Artemis缓存数据直接相关。

解决方案

我整理了几个针对Corda 1.0版本的可行修复步骤,建议按优先级尝试:

  1. 清理Artemis旧消息存储
    Corda节点的Artemis消息数据默认存放在节点目录下的artemis文件夹中。停止节点后,删除这个文件夹(注意不要误删persistence或certificates等业务相关目录),然后重新启动节点。节点会自动重建干净的Artemis存储,不会丢失你的业务数据(业务数据存在H2数据库的persistence目录里)。

  2. 调整SSL握手超时时间
    在节点的node.conf配置文件中,找到p2p或rpc配置块,添加SSL握手超时配置:

    p2p {
        ssl {
            handshakeTimeout = 30000
        }
    }
    rpc {
        ssl {
            handshakeTimeout = 30000
        }
    }
    

    把超时时间从默认的10秒调整到30秒,给握手过程预留更多时间完成。

  3. 检查端口占用情况
    日志里显示节点监听10014(P2P端口)和10015(RPC端口),确保这些端口没有被其他进程占用:

    • Windows系统用命令:netstat -ano | findstr "10014"
    • Linux/Mac系统用命令:lsof -i :10014
      如果发现端口被占用,终止对应进程后重启节点。
  4. 验证节点证书有效性
    旧数据中可能存在过期或损坏的SSL证书。检查节点目录下certificates文件夹中的证书文件,确认它们没有过期。如果证书有问题,可以通过Corda的generateNodeInfo和initialiseNode命令重新生成节点证书。

额外建议

你使用的Corda 1.0是非常早期的版本,这类底层组件的兼容性问题在后续的Corda版本中已经被大量修复。如果业务允许,建议逐步升级到较新的稳定版本(比如Corda 4.x),能从根本上减少这类问题的发生。

内容的提问来源于stack exchange,提问作者viswa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:03:52