使用Cosign无密钥模式时,如何从Cosign Bundle获取Rekor URL条目?
从Cosign Bundle获取Rekor条目URL的方法
当你用Cosign无密钥模式签名Blob并生成Bundle后,有两种方法可以获取对应的Rekor条目URL:
方法一:用Cosign命令直接查询
直接运行以下命令,Cosign会自动从Bundle中提取信息并返回Rekor条目详情(包含完整URL):
cosign rekor get --bundle test.txt.cosign.bundle
执行后,输出内容里会明确给出Rekor条目URL,比如你提供的示例格式:https://rekor.sigstore.dev/api/v1/log/entries/24296fb24b8ad77a7e53fd5d089af142b7909598d214e13ca76001cc575fddaad3210adbee86363e
方法二:手动推导UUID构造URL
Rekor条目URL的最后一段是条目UUID,这个UUID由Bundle中的logID和logIndex两个字段组合生成:
- 处理
logIndex:将Bundle里的十进制logIndex值转换成小写十六进制字符串(无需前导0x) - 处理
logID:Bundle中的logID是base64编码值,先解码成原始字节,再转换成小写十六进制字符串 - 拼接UUID:将
logID的十六进制字符串和logIndex的十六进制字符串拼接在一起,得到完整的条目UUID - 构造URL:把UUID拼到Rekor API基础URL后,即:
https://rekor.sigstore.dev/api/v1/log/entries/<拼接后的UUID>
举个简单例子:
- 若Bundle中
logIndex为1234,转十六进制是4d2 logID解码后十六进制为24296fb24b8ad77a7e53fd5d089af142b7909598d214e13ca76001cc575fddaad- 拼接后UUID为
24296fb24b8ad77a7e53fd5d089af142b7909598d214e13ca76001cc575fddaad4d2 - 最终URL就是
https://rekor.sigstore.dev/api/v1/log/entries/24296fb24b8ad77a7e53fd5d089af142b7909598d214e13ca76001cc575fddaad4d2
注:手动推导需要确保十六进制转换准确,推荐优先使用Cosign命令的方式,避免手动计算出错。
内容的提问来源于stack exchange,提问作者Mendhak
相关产品推荐
相关产品推荐

