Linux上的Corda开源。启用节点RPC SSL。我收到错误“无法在certificate \ sslkeystore.jks找到商店”。有任何想法吗?我已经在keyStorePath中输入了绝对路径。
您必须遵循本段的步骤:https : //docs.corda.net/clientrpc.html#wire-security,我在下面为您详细介绍。
启用RPC SSL时,必须运行一次此命令(系统将要求您提供2个新密码):
java -jar corda.jar generate-rpc-ssl-settings
它将创建rpcsslkeystore.jks
under certificates
文件夹和rpcssltruststore.jks
under certificates/export
文件夹。
在您的node.conf
供应中,输入以下路径和密码rpcsslkeystore.jks
:
rpcSettings {
useSsl=true
ssl {
keyStorePath=${baseDirectory}/certificates/rpcsslkeystore.jks
keyStorePassword=password
}
standAloneBroker = false
address = "0.0.0.0:10003"
adminAddress = "0.0.0.0:10004"
}
现在,如果您有网络服务器,则NodeRPCConnection
必须在内部使用带有ClientRpcSslOptions
参数的构造函数:
// RPC SSL properties.
@Value("${config.rpc.ssl.truststorepath}")
private String trustStorePath;
@Value("${config.rpc.ssl.truststorepassword}")
private String trustStorePassword;
@PostConstruct
public void initialiseNodeRPCConnection() {
NetworkHostAndPort rpcAddress = new NetworkHostAndPort(host, rpcPort);
ClientRpcSslOptions clientRpcSslOptions = new ClientRpcSslOptions(Paths.get(trustStorePath),
trustStorePassword, "JKS");
CordaRPCClient rpcClient = new CordaRPCClient(rpcAddress, clientRpcSslOptions, null);
rpcConnection = rpcClient.start(username, password);
proxy = rpcConnection.getProxy();
}
为此,我们在上面添加了两个额外的属性,您现在必须在启动Web服务器时提供这些属性;修改您的clients
模块build.gradle
:
task runNodeServer(type: JavaExec, dependsOn: jar) {
classpath = sourceSets.main.runtimeClasspath
main = 'com.example.server.ServerKt'
args '--server.port=50005', '--config.rpc.host=localhost',
'--config.rpc.port=10005', '--config.rpc.username=user1', '--config.rpc.password=test',
'--config.rpc.ssl.truststorepath=/path-to-project/build/nodes/your-node/certificates/export/rpcssltruststore.jks',
'--config.rpc.ssl.truststorepassword=password'
}
如果您打算使用独立的Shell连接到该节点,则必须执行类似的操作,但对我而言不起作用。我报告了以下错误:https : //github.com/corda/corda/issues/5955
嗨,阿德尔。那就是我在做的。只是我没有单独生成密钥库。我正在使用由网络引导程序工具生成的一个。Spring客户端和内置(不使用独立的)Shell服务器都报告它们在该文件中找不到存储。注意:网络是在另一台计算机上引导的,然后将节点移至目标计算机。
我建议您遵循R3提供的步骤,如果他们说您必须运行该命令并使用生成的密钥和信任库;那是有原因的