Corda 5.0从CPB生成CPI文件时遇‘未设置可信证书’错误
解决Corda 5创建CPI时的"Error verifying CPB: Trusted certificates not set"问题
问题场景
已通过R3提供的Kubernetes脚本部署Corda网络,遵循官方步骤使用corda-cli创建CPI文件,执行以下命令:
./corda-cli.sh package create-cpi --cpb "$WORK_DIR/member-cordapp-cpb.cpb" --group-policy "$WORK_DIR/GroupPolicy.json" --cpi-name member-cordapp-cpi --cpi-version "1.0.0.0-SNAPSHOT" --file "$WORK_DIR/member-cordapp-cpi.cpi" --keystore $HOME/memberSigningkeystore.keystore --storepass "password" --key "member-signing-key"
执行后报错:
Error verifying CPB: Trusted certificates not set
使用的签名凭据(密钥库、密钥、密码)与生成CPB文件时完全一致,更换其他签名密钥后问题仍存在。
解决方案
1. 在创建命令中添加信任库参数
Corda CLI验证CPB签名时,需要明确指定包含CPB签名证书的信任库。在create-cpi命令中补充--truststore和--truststore-pass参数,指向对应的信任库文件:
./corda-cli.sh package create-cpi --cpb "$WORK_DIR/member-cordapp-cpb.cpb" --group-policy "$WORK_DIR/GroupPolicy.json" --cpi-name member-cordapp-cpi --cpi-version "1.0.0.0-SNAPSHOT" --file "$WORK_DIR/member-cordapp-cpi.cpi" --keystore $HOME/memberSigningkeystore.keystore --storepass "password" --key "member-signing-key" --truststore $HOME/memberTruststore.keystore --truststore-pass "truststore-password"
该信任库需包含用于签名CPB的证书(自签名根证书或CA证书均可),确保CLI能验证CPB的签名合法性。
2. 确保CPB签名证书已导入信任库
- 先检查信任库中是否存在目标签名证书:
keytool -list -keystore $HOME/memberTruststore.keystore -storepass "truststore-password" - 若不存在,先从签名密钥库导出证书:
keytool -exportcert -alias "member-signing-key" -keystore $HOME/memberSigningkeystore.keystore -file "member-signing-cert.crt" -storepass "password" - 再将证书导入信任库:
keytool -importcert -file "member-signing-cert.crt" -keystore $HOME/memberTruststore.keystore -alias "member-signing-cert" -storepass "truststore-password"
3. 校验Group Policy的签名约束配置
检查GroupPolicy.json中的signatureConstraints节点,确保其允许当前使用的签名证书:
- 若配置了CA签发约束,需确认CPB签名证书由该CA签发;
- 若为自签名场景,需将签名证书添加到Group Policy的信任列表中。
内容的提问来源于stack exchange,提问作者Hemant Dhamal
相关产品推荐
相关产品推荐

