尽管每个node.conf保持不变,但每次构建都需要生成节点信息文件

时间:2018-08-22 18:24:43

标签: corda

我正在docker环境中运行corda应用程序。因此,我为每个节点生成了节点信息文件,并将它们复制到节点以启动应用程序。最初,我假定只要node.conf保持不变,我就可以使用相同的节点信息文件,但是事实并非如此。

  • 如果在重建后使用相同的节点信息文件。节点之间可以很好地连接。但是,当启动流时,我从一个节点(security.ActiveMQJAASSecurityManager.validateUser-无法验证用户{})中收到以下AMQP错误,完整的堆栈跟踪如下。

  • 如果我复制节点信息文件和生成节点信息文件时使用的证书目录的内容,则会出现合同验证错误。

请注意,每次我从头开始启动Corda网络时。

  • 这是预期的行为吗?
  • 如果node.conf保持不变,那么给定版本(根证书等)的节点信息文件应绑定到哪些属性?
  • 根dev证书在每次构建时是否更改?

我试图了解如何进行设置以便设置我们的测试环境。

谢谢

完成堆栈跟踪:

auditorcontainer | D 18:25:36+0000 [Thread-4 (activemq-netty-threads)] security.ActiveMQJAASSecurityManager.validateUser - Couldn't validate user {}
auditorcontainer |  javax.security.auth.login.FailedLoginException: Username not provided
auditorcontainer |      at net.corda.node.services.messaging.NodeLoginModule.login(ArtemisMessagingServer.kt:255) ~[corda-node-3.2-corda.jar:?]
auditorcontainer |      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
auditorcontainer |      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_151]
auditorcontainer |      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
auditorcontainer |      at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
auditorcontainer |      at javax.security.auth.login.LoginContext.invoke(LoginContext.java:755) ~[?:1.8.0_151]
auditorcontainer |      at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195) ~[?:1.8.0_151]
auditorcontainer |      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682) ~[?:1.8.0_151]
auditorcontainer |      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680) ~[?:1.8.0_151]
auditorcontainer |      at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_151]
auditorcontainer |      at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680) ~[?:1.8.0_151]
auditorcontainer |      at javax.security.auth.login.LoginContext.login(LoginContext.java:587) ~[?:1.8.0_151]
auditorcontainer |      at org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager.getAuthenticatedSubject(ActiveMQJAASSecurityManager.java:186) ~[artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager.validateUser(ActiveMQJAASSecurityManager.java:93) [artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at org.apache.activemq.artemis.core.security.impl.SecurityStoreImpl.authenticate(SecurityStoreImpl.java:129) [artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.broker.AMQPConnectionCallback.isSupportsAnonymous(AMQPConnectionCallback.java:105) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.broker.AMQPConnectionCallback.getSASLMechnisms(AMQPConnectionCallback.java:93) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.onAuthInit(AMQPConnectionContext.java:324) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.dispatchAuth(ProtonHandler.java:326) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.inputBuffer(ProtonHandler.java:221) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocofl.amqp.proton.AMQPConnectionContext.inputBuffer(AMQPConnectionContext.java:125) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.broker.ActiveMQProtonRemotingConnection.bufferReceived(ActiveMQProtonRemotingConnection.java:138) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:631) [artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68) [artemis-core-client-2.2.0.jar:2.2.0]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.handlerRemoved(ByteToMessageDecoder.java:219) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.callHandlerRemoved0(DefaultChannelPipeline.java:631) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:468) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:428) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at org.apache.activemq.artemis.core.protocol.ProtocolHandler$ProtocolDecoder.decode(ProtocolHandler.java:186) [artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at org.apache.activemq.artemis.core.protocol.ProtocolHandler$ProtocolDecoder.channelRead(ProtocolHandler.java:128) [artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1240) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1041) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Fin:qll.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:1017) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:394) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:299) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
auditorcontainer | D 18:25:36+0000 [Thread-4 (activemq-netty-threads)] impl.PostOfficeImpl.route - Couldn't find any bindings for address=internal.activemq.notifications on message=CoreMessage[messageID=32,durable=true,userID=null,priority=0, timestamp=0,expiration=0, durable=true, address=internal.activemq.notifications,properties=TypedProperties[_AMQ_NotifType=SECURITY_AUTHENTICATION_VIOLATION,_AMQ_NotifTimestamp=1534530336155]]@339279392 {}
auditorcontainer | D 18:25:36+0000 [Thread-4 (activemq-netty-threads)] impl.PostOfficeImpl.route - Message CoreMessage[messageID=32,durable=true,userID=null,priority=0, timestamp=0,expiration=0, durable=true, address=internal.activemq.notifications,properties=TypedProperties[_AMQ_NotifType=SECURITY_AUTHENTICATION_VIOLATION,_AMQ_NotifTimestamp=1534530336155]]@339279392 is not going anywhere as it didn't have a binding on address:internal.activemq.notifications {}
auditorcontainer | D 18:25:36+0000 [Thread-4 (activemq-netty-threads)] messaging.NodeLoginModule.login - Processing login for SystemUsers/Peer {}
auditorcontainer | D 18:25:36+0000 [Thread-4 (activemq-netty-threads)] security.ActiveMQJAASSecurityManager.validateUser - Couldn't validate user {}
auditorcontainer |  javax.security.auth.login.LoginException: java.lang.IllegalArgumentException: No TLS?
auditorcontainer |      at net.corda.node.services.messaging.NodeLoginModule$determineUserRole$1.invoke(ArtemisMessagingServer.kt:296)
auditorcontainer |      at net.corda.node.services.messaging.NodeLoginModule.determineUserRole(ArtemisMessagingServer.kt:299)
auditorcontainer |      at net.corda.node.services.messaging.NodeLoginModule.login(ArtemisMessagingServer.kt:261)
auditorcontainer |      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
auditorcontainer |      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
auditorcontainer |      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
auditorcontainer |      at java.lang.reflect.Method.invoke(Method.java:498)
auditorcontainer |      at javax.security.auth.login.LoginContext.invoke(LoginContext.java:755)
auditorcontainer |      at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195)
auditorcontainer |      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682)
auditorcontainer |      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680)
auditorcontainer |      at java.security.AccessController.doPrivileged(Native Method)
auditorcontainer |      at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
auditorcontainer |      at javax.security.auth.login.LoginContext.login(LoginContext.java:587)
auditorcontainer |      at org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager.getAuthenticatedSubject(ActiveMQJAASSecurityManager.java:186)
auditorcontainer |      at org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager.validateUser(ActiveMQJAASSecurityManager.java:93)
auditorcontainer |      at org.apache.activemq.artemis.core.security.impl.SecurityStoreImpl.authenticate(SecurityStoreImpl.java:129)
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.sasl.PlainSASL.authenticate(PlainSASL.java:33)
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.sasl.ServerSASLPlain.processSASL(ServerSASLPlain.java:48)
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.checkServerSASL(ProtonHandler.java:306)
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.flush(ProtonHandler.java:271)
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.inputBuffer(ProtonHandler.java:240)
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.inputBuffer(AMQPConnectionContext.java:125)
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.broker.ActiveMQProtonRemotingConnection.bufferReceived(ActiveMQProtonRemotingConnection.java:138)
auditorcontainer |      at org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:631)
auditorcontainer |      at org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68)
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.handlerRemoved(ByteToMessageDecoder.java:219)
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.callHandlerRemoved0(DefaultChannelPipeline.java:631)
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:468)
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:428)
auditorcontainer |      at org.apache.activemq.artemis.core.protocol.ProtocolHandler$ProtocolDecoder.decode(ProtocolHandler.java:186)
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411)
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)
auditorcontainer |      at org.apache.activemq.artemis.core.protocol.ProtocolHandler$ProtocolDecoder.channelRead(ProtocolHandler.java:128)
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
auditorcontainer |      at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1240)
auditorcontainer |      at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1041)
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411)
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
auditorcontainer |      at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:1017)
auditorcontainer |      at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:394)
auditorcontainer |      at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:299)
auditorcontainer |      at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
auditorcontainer |      at java.lang.Thread.run(Thread.java:748)
auditorcontainer |
auditorcontainer |      at javax.security.auth.login.LoginContext.invoke(LoginContext.java:856) ~[?:1.8.0_151]
auditorcontainer |      at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195) ~[?:1.8.0_151]
auditorcontainer |      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682) ~[?:1.8.0_151]
auditorcontainer |      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680) ~[?:1.8.0_151]
auditorcontainer |      at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_151]
auditorcontainer |      at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680) ~[?:1.8.0_151]
auditorcontainer |      at javax.security.auth.login.LoginContext.login(LoginContext.java:587) ~[?:1.8.0_151]
auditorcontainer |      at org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager.getAuthenticatedSubject(ActiveMQJAASSecurityManager.java:186) ~[artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager.validateUser(ActiveMQJAASSecurityManager.java:93) [artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at org.apache.activemq.artemis.core.security.impl.SecurityStoreImpl.authenticate(SecurityStoreImpl.java:129) [artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.sasl.PlainSASL.authenticate(PlainSASL.java:33) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.sasl.ServerSASLPlain.processSASL(ServerSASLPlain.java:48) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.checkServerSASL(ProtonHandler.java:306) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.flush(ProtonHandler.java:271) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.inputBuffer(ProtonHandler.java:240) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.inputBuffer(AMQPConnectionContext.java:125) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.protocol.amqp.broker.ActiveMQProtonRemotingConnection.bufferReceived(ActiveMQProtonRemotingConnection.java:138) [artemis-amqp-protocol-2.2.0.jar:?]
auditorcontainer |      at org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:631) [artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68) [artemis-core-client-2.2.0.jar:2.2.0]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.handlerRemoved(ByteToMessageDecoder.java:219) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.callHandlerRemoved0(DefaultChannelPipeline.java:631) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:468) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:428) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at org.apache.activemq.artemis.core.protocol.ProtocolHandler$ProtocolDecoder.decode(ProtocolHandler.java:186) [artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at org.apache.activemq.artemis.core.protocol.ProtocolHandler$ProtocolDecoder.channelRead(ProtocolHandler.java:128) [artemis-server-2.2.0.jar:2.2.0]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1240) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1041) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:1017) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:394) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:299) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [netty-all-4.1.9.Final.jar:4.1.9.Final]
auditorcontainer |      at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]

2 个答案:

答案 0 :(得分:1)

分别处理每个案例:

  • 如果在重建后使用相同的节点信息文件。节点之间可以很好地连接。但是,当启动流时,我从一个节点(security.ActiveMQJAASSecurityManager.validateUser-无法验证用户{})中收到以下AMQP错误,完整的堆栈跟踪如下。

在这种情况下的问题是,当节点首次启动时,它会生成一个新的公用/专用密钥对。然后,它使用此密钥对生成其证书和nodeInfonodeInfo中的密钥对和证书必须匹配。这就是为什么在替换nodeInfo而不是证书时看到用户验证错误的原因。

  • 如果我复制节点信息文件和生成节点信息文件时使用的证书目录的内容,则会出现合同验证错误。

在这种情况下,问题是从Corda 3开始,每个网络都有接受的合同JAR文件的白名单。我认为,作为重建节点的一部分,您将重建CorDapp JAR文件。由于JAR文件包含时间戳,因此它们的哈希值在各个版本中将不相同,并且网络将无法识别新的CorDapp JAR,从而导致合同验证失败。但是,如果您使用的是引导程序,则可以按照说明here更新合同白名单。

答案 1 :(得分:0)

根据corda certificates docs,节点需要证书,因为它们使用它们相互连接(毕竟这是一个允许的网络)。结果,您不能使用相同的证书,因此每个节点必须具有自己的证书。

如果要自动化构建过程,建议使用network bootstrapper tool引导网络。您可以使用相同的配置文件(即与docker使用相同的设置),您只需要拥有多个配置文件副本即可: node1.conf,node2.conf等。一旦将所有文件保存在存储库中,就可以简单地运行

java -jar network-bootstrapper-VERSION.jar --dir <nodes-root-dir>

,它将生成所需的/ nodes文件夹,供您从中运行网络。如果这样做,虽然可以,但不必每次都重建网络。

您可以从here下载该工具。