虚拟私有云

创建待签名字符串

2022-04-19 13:59:38

待签名字符串的构造规则如下:

待签名字符串=需要进行签名的Header排序后的组合列表+ "\n" + 排序的query + "\n" + toHex(sha256(原封的body))

需要进行签名的Header排序后的组合列表(排序的header)

header 以 header_name:header_value来一个一个通过\n拼接起来,EOP是强制要求ctyun-eop-request-id和eop-date这个头作为Header中的一部分,并且必须是待签名Header里的一个。需要进行签名算法的Header需要进行排序(将它们的header_name以26个英文字母的顺序来排序),将排序后得到的列表进行遍历组装成待签名的header。

排序的query

query以&作为拼接,key和值以=连接,排序规则使用26个英文字母的顺序来排序,Query参数全部都需要进行签名

toHex(sha256(原封的body))

传进来的body参数进行sha256摘要,对摘要出来的结果转十六进制

排序的header例子:

假设你需要将ctyun-eop-request-id、eop-date、host都要签名,则待签名的header构造出来是:

ctyun-eop-request-id:123456789\neop-date:20210531T100101Z\nhost:1.1.1.1:9080\n

ctyun-eop-request-id、eop-date和host的排序就是这个顺序,如果你加入一个ccad的header;同时这个header也要是进行签名,则待签名的header组合:

ccda:123\n ctyun-eop-request-id:123456789\neop-date:20210531T100101Z\nhost:1.1.1.1:9080\n