Corda V3 Network Permissioning 自行颁发节点证书

Corda V3 Network Permissioning self issuance of node certificates

您好,我一直在尝试以非开发模式启动 corda V3 的节点。

目前在启动节点后,在重新启动期间我遇到错误:java.security.cert.CertPathValidatorException: The issuing certificate for C=UK, L=London, O=NetworkMapAndNotary has role NETWORK_MAP, expected one of [INTERMEDIATE_CA, NODE_CA]

此link中提供了我遵循的角色:https://docs.corda.net/head/permissioning.html#certificate-role-extension

OID Corda Role (1.3.6.1.4.1.50530.1.1)

获得

对这个问题有什么建议吗?

当我遵循 Devmode 并将我的 NetworkMapAndNotary 分配给(角色 4)时,它无法启动并出现错误:java.lang.IllegalArgumentException: Incorrect cert role: NODE_CA at net.corda.nodeapi.internal.network.NetworkMapKt.verifiedNetworkMapCert(NetworkMap.kt:48) ~[corda-node-api-corda-3.0.jar:?]

旁注:我尝试遵循 devmode 证书创建并注意到 devmode (NetworkMapAndNotary) 证书被标记在节点(角色 4)下,为什么会这样..

Certificate[2]:
Owner: O=NetworkMapAndNotary, L=London, C=UK
Issuer: C=UK, L=London, OU=corda, O=R3, CN=Corda Node Intermediate CA
Serial number: 39551bff61207fb6
Valid from: Mon Mar 26 07:00:00 ICT 2018 until: Thu May 20 07:00:00 ICT 2027
Certificate fingerprints:
     MD5:  D1:8C:4D:83:F2:A7:F4:DA:60:05:E3:69:2C:30:FF:20
     SHA1: E5:4D:01:A5:68:01:73:59:8B:7A:3D:0B:28:4E:35:C4:CD:DE:C7:52
     SHA256: 3F:D6:24:E5:C8:9F:BE:EE:D4:99:D7:2C:85:50:F0:A8:26:46:84:D7:FB:3A:42:54:F2:12:64:51:48:58:FD:CF
     Signature algorithm name: SHA256withECDSA
     Version: 3

Extensions:

#1: ObjectId: 1.3.6.1.4.1.50530.1.1 Criticality=false
0000: 02 01 04

Corda V3 中重新设计了网络地图。看看下面的blog post and the docs here

尝试删除网络映射标识

我按照下图分配了两个不同的证书来解决这个问题:https://docs.corda.net/_images/certificate_structure.png

基本上我需要创建两个证书而不是一个。

  1. 网络地图自签名证书(网络地图角色)
  2. nodeca(节点角色)的另一个签名证书

这里的一个问题是因为 Corda 的工具 networkBootStrapper.kt 文件在以下函数中附带了一个硬代码函数:installNetworkParameters 它将始终调用:createDevNetworkMapCa() 函数来生成一个开发密钥对,无论我是否在 dev-mode 中。

自定义文件以在 role-extension 上添加网络地图使用 self-signed 证书。所以节点证书仍然存在,但网络映射将是一个 one-time 用于为每个节点生成 network-parameters 文件的密钥,节点角色将始终用于节点启动。

重新启动失败,因为它看到有一个网络映射角色证书充当网络中的另一个节点角色。