Проблемы с выводом узла при использовании собственных сертификатов после выключения devMode - PullRequest
0 голосов
/ 26 мая 2018

Мы сталкиваемся со следующими проблемами при запуске кода Corda при использовании наших собственных сгенерированных сертификатов (а не сгенерированных узлом Corda в devMode=true).

Ниже приведены шаги, которые мы сделали:

  • Сгенерированные сертификаты согласно https://docs.corda.net/permissioning.html
  • Скопированы сертификаты в каталог / Certificates.
  • Удалены cordadevcakeys.jks и cordatruststore.jks в каталоге ресурсов

Запустил узел.Мы получили следующую ошибку:

Исключительная ситуация при запуске узла {} java.lang.IllegalArgumentException: не удалось найти файл сетевых параметров и зона совместимости не была настроена / недоступна в net.corda.node.internal.NetworkParametersReader.retrieveNetworkParameters (NetworkParametersReader.kt: 53) ~ [corda-node-corda-4.0-SNAPSHOT.jar :?] в сети net.corda.node.internal.NetworkParametersReader.access $17) ~ [corda-node-corda-4.0-SNAPSHOT.jar :?] на net.corda.node.internal.NetworkParametersReader $ networkParameters $ 2.invoke (NetworkParametersReader.kt: 26) ~ [corda-node-corda-4.0-SNAPSHOT.jar :?] at

Теперь, если мы сохраним cordadevcakeys.jks и cordatruststore.jks в каталоге ресурсов, появится узел.

Запросы:

  1. Нужно ли указывать URL-адрес зоны совместимости в указанном выше случае?
  2. Если да, то не могли бы вы помочь нам понять требования для его настройки?
  3. Как работает система corda doormотправляет сертификаты?Используете HTTPS / HTTP GET метод?Или любой другой протокол?
  4. Не могли бы вы объяснить зависимость от cordadevcakeys.jks и cordatruststore.jks в каталоге ресурсов для запуска узла, devmode=false и зоне совместимости
  5. Не могли бы вы, пожалуйстаобъяснить необходимость и структуру сетевых параметров?
  6. Нам не удалось найти правильное использование или документ для сетевых параметров.Не могли бы вы помочь понять то же самое?
  7. Отличается ли настройка зоны совместимости от настройки службы карты сети?
  8. Швейцар отличается от карты сети, а швейцар является автономным объектом, а сертификаты создаются и распространяютсяиз группы?Правильно ли это понимание?
  9. Является ли карта сети отдельным файлом или отдельными файлами информации об узлах.Если это один файл, не могли бы вы поделиться форматом и кодировкой?Что представляет собой хеш в / network-map / node-info / {hash}?
  10. Я запутался с использованием / network-map / ack-parameters.Не могли бы вы объяснить то же самое?
  11. В https://docs.corda.net/corda-configuration-file.html пример совместимости ZoneUrl приведен со схемой «https://“. Этот пример неверен?
  12. Как создать файл сетевых параметров?Я получил представление о файле.Но точной кодировки я не знаю.Этот файл создан автономной программой?Кто подписывает это?Нужно ли оператору узла каждый раз принимать новый набор параметров сети?Как мне узнать хеш / network-map / network-parameters / {hash}?
  13. Пожалуйста, смотрите прикрепленную картинку моего понимания.Пожалуйста, дайте мне знать, правильно ли понимание и процесс.

enter image description here

Не могли бы вы указать конечную точку, в которую узлы отправляют запросы на сертификат?Я видел следующее: https://github.com/corda/corda/blob/a3d88f752d964d3768e153be189f196c600c8d7d/docs/source/example-code/src/main/resources/example-node-with-networkservices.conf:

networkServices : {
   doormanURL = "https://registration.corda.net"
   networkMapURL = "https://cz.corda.net"
}

Не могли бы вы объяснить остальные конечные точки, обслуживаемые URL швейцара?/certificate?

Поскольку карта сети имеет следующую структуру:

data class NetworkMap(  
    val nodeInfoHashes: List<SecureHash>,
    val networkParameterHash: SecureHash,
    val parametersUpdate: ParametersUpdate?
) 

И она не содержит nodeinfo.Является ли следующая процедура правильной?

  1. Узел сначала получает хэши всех nodeinfo с карты сети
  2. Узел затем загружает все nodeInfo спо одному

Не могли бы вы объяснить, когда nodeInfo загружен?Кроме того, если данный узел является первым узлом, карта сети может быть пустой.Будет ли узел не загружаться, потому что на карте сети ничего нет (так каке нет nodeinfo с)?

1 Ответ

0 голосов
/ 29 мая 2018

Примечание: помимо просмотра этих ответов, вы должны обратиться к:

Ответы ниже:

  1. Да.Это сообщение об ошибке выдается либо потому, что вы не указали URL-адрес зоны совместимости, либо из-за невозможности доступа к серверу по указанному вами URL-адресу

  2. Необходимо предоставить сервер сетевой карты, которыйпрослушивает адрес, указанный в файле конфигурации узла в качестве URL-адреса зоны совместимости, и реализует следующий протокол: https://docs.corda.net/network-map.html#http-network-map-protocol

  3. Швейцар отправляет параметры сетевой карты и информацию об узле, используя HTTP, в ответ на HTTPGET-запросы, соответствующие этому протоколу: https://docs.corda.net/network-map.html#http-network-map-protocol. HTTPS не используется, но поскольку сетевые параметры и информационные объекты узла подписаны, они не могут быть изменены с помощью

  4. Эти .jks файлы являются хранилищами ключей разработки, которые используются только при работе узлов в режиме разработки (т. е. когда devMode=true)

  5. Необходимость сетевых параметров задокументирована здесь: https://docs.corda.net/network-map.html#network-parameters. Структура сетевых параметров является сериализованным экземпляром следующего класса: https://github.com/corda/corda/blob/8504b65e7b14a95fc4486c82d1e3e77d1c4e3562/core/src/main/kotlin/net/corda/core/node/NetworkParameters.kt#L27

  6. Параметры сети задокументированы здесь: https://docs.corda.net/network-map.html#network-parameters

  7. Нет.Это одно и то же

  8. Да, это разные сущности.Швейцар предоставляет сертификаты CA узлов, а карта сети используется, чтобы позволить узлам обнаруживать другие узлы в сети.Сертификат CA корневой сети распространяется вне диапазона.Затем узлы используют флаг --initial-registration (см. https://docs.corda.net/permissioning.html#connecting-to-a-compatibility-zone) для выполнения запроса подписи сертификата и создания сертификата CA своего узла. Затем узел создаст свои сертификаты идентификации и сертификаты TLS при первом запуске и отправит свой NodeInfo на карту сети

  9. Карта сети представляет собой один файл. Это сериализованный экземпляр класса SignedDataWithCert<NetworkMap>. hash в URL - это SecureHash изa SerialisedBytes<NodeInfo>

  10. Узел будет обрабатывать отправку подтверждения автоматически, если вы используете операцию acceptNewNetworkParameters RPC, задокументированную здесь: https://docs.corda.net/network-map.html#network-parameters-update-process

  11. ИспользованиеHTTPS - это нормально, но необязательно

  12. Файл сетевых параметров является сериализованным экземпляром класса SignedDataWithCert<NetworkParameters>. Он должен быть подписан тем же сертификатом, который подписал объект карты сети (т. Е.объект с ролью швейцара CA. Да, узел должен принять новые сетевые параметры - см. документацию здесь: https://docs.corda.net/network-map.html#network-parameters-update-process. Вы получаете хэш, запрашивая сам объект карты сети. Этот объектимеет поле networkParameterHash, которое является нужным хешем.

  13. Диаграмма немного неправильная.Вам нужно сделать запрос GET /network-map первым, а не последним.Это обеспечит требуемый хэш сетевых параметров

  14. Это правильно.Вам нужно попасть в /certificate конечную точку

  15. Процедура, которую вы описываете, является правильной.Узел загружает nodeInfo при запуске узла.Он проверяет, изменился ли его nodeInfo, и если он изменился, отправляет новый на карту сети.Если карта сети в данный момент пуста при загрузке узла, узел всегда будет добавлять свой собственный nodeInfo в свой локальный кеш, даже если загружаемая карта сети не содержит его.Однако он все равно будет загружаться, даже если карта сети изначально пуста

...