Azure上的Microsoft CCF无法激活初始成员求助
Azure机密账本成员激活报错排查
在机密账本上执行任何操作都需要至少一名Active(活跃)成员。在Azure上创建机密账本时会自动生成一个成员(本例为ccfbank1),初始状态为Accepted(已接受)。要将成员状态从Accepted切换到Active,需调用/gov/state-digests/:ack端点并传入最新状态的签名摘要,但调用后返回如下错误:
执行命令
ccf_cose_sign1 \ --ccf-gov-msg-type ack \ --ccf-gov-msg-created_at date -uIseconds \ --signing-key ccfbank1_privk.pem \ --signing-cert ccfbank1_cert.pem \ --content state_digest.json \ | curl https://myledger.confidential-ledger.azure.com/gov/members/state-digests/memberId:ack?api-version=2023-06-01-preview -k --data-binary @- -H "content-type: application/cose"
返回错误
{"error":{"code":"InvalidInput","message":"[json.exception.type_error.302] type must be string, but is number"}}
问题分析与修复方案
错误提示表明请求中存在“应为字符串类型但传入数字”的字段,重点排查以下几点:
时间参数传递错误:
--ccf-gov-msg-created_at需要接收字符串格式的UTC时间戳,原命令中直接写date -uIseconds会将命令本身而非执行结果作为参数值,导致生成的COSE消息中时间字段类型异常。需用命令替换语法获取正确的时间字符串:--ccf-gov-msg-created_at "$(date -uIseconds)"curl命令格式错误:
原命令中curl行末尾未加反斜杠,会导致后续的--data-binary和-H参数被当成独立命令执行,需修正换行格式。state_digest.json字段检查:
确认state_digest.json内所有字段类型符合接口要求,比如state_digest等字段若为数值,需包裹为字符串格式。
修正后完整命令
ccf_cose_sign1 \ --ccf-gov-msg-type ack \ --ccf-gov-msg-created_at "$(date -uIseconds)" \ --signing-key ccfbank1_privk.pem \ --signing-cert ccfbank1_cert.pem \ --content state_digest.json \ | curl https://myledger.confidential-ledger.azure.com/gov/members/state-digests/memberId:ack?api-version=2023-06-01-preview -k \ --data-binary @- \ -H "content-type: application/cose"
内容的提问来源于stack exchange,提问作者anthonyc
相关产品推荐
相关产品推荐

