Corda - не удалось найти магазин по сертификату \ sslkeystore.jks - PullRequest
0 голосов
/ 15 февраля 2020

Corda с открытым исходным кодом на Linux. Узел RP C SSL включен. Я получаю сообщение об ошибке "Не удалось найти магазин по сертификату \ sslkeystore.jks". Любые идеи? Я ввел абсолютный путь в keyStorePath.

1 Ответ

1 голос
/ 16 февраля 2020

Вы должны выполнить шаги этого параграфа: 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

...