Вы должны выполнить шаги этого параграфа: https://docs.corda.net/clientrpc.html#wire -security , который я подробно описал ниже.
Когда вы включаете RP C SSL, вы должны выполнить эту команду один раз (вам будет предложено ввести 2 новых пароля):
java -jar corda.jar generate-rpc-ssl-settings
Это создаст rpcsslkeystore.jks
в папке certificates
и rpcssltruststore.jks
в папке 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();
}
Мы добавили 2 дополнительных атрибута, которые вы теперь должны указать при запуске веб-сервера; измените ваш 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'
}
Если вы планируете подключиться к узлу с помощью автономной оболочки, вы должны сделать что-то подобное, но у меня это не сработало; Я сообщил о следующей ошибке: https://github.com/corda/corda/issues/5955