获取AKSK 本文简述如何调用API获取AKSK。 一、获取AKSK 1. 登录CDN+ IAM,地址:vip.ctcdn.cn 。 2. 在个人中心AccessKey管理页面,点击新增按钮。 3. 选择对应的工作区并确定,此时你可以查看到AccessKey已生成。 4. 选中密钥,点击查看。为保障安全,需要填写手机验证码。验证通过后,点击显示SK,即可查看详情,并支持复制和发送邮箱操作。 二、在httpclient的请求头增加3个字段,分别是eopdate、ctyuneoprequestid、EopAuthorization。 1.构造eopdate 。该字段的格式是“yyyymmddTHHMMSSZ”,言简意赅就是“年月日T时分秒Z”,示例“eopdate:20211221T163614Z”。 2.构造ctyuneoprequestid 。该字段是uuid,32位随机数。 3.构造EopAuthorization 。按以下步骤进行: 3.1构造代签字符串sigture 。 sigture 需要进行签名的Header排序后的组合列表+ " n " + 排序的query + " n " + toHex(sha256(原封的body)) 步骤 构造请求头的方法 需要进行签名的Header排序后的组合列表 将ctyuneoprequestid、eopdate以 “headername:headervalue”的形式、以“n ”作为每个header的结尾符、以英文字母表作为headername的排序依据将它们拼接起来。 注意:EOP强制要求ctyuneoprequestid、eopdate必须进行签名。其他字段是否需要签名看自身需求。 例子(假设你需要将ctyuneoprequestid、eopdate、host都要签名): ctyuneoprequestid:123456789neopdate:20210531T100101Zn 排序的query query以&作为拼接,key和值以连接,排序规则使用26个英文字母的顺序来排序,Query参数全部都需要进行签名 toHex(sha256(原封的body)) 传进来的body参数进行sha256摘要,对摘要出来的结果转十六进制 sigture 示例1: 假设query 为空 、需要进行签名的Header排序后的组合列表为“ctyuneoprequestid:27cfe4dce64045f692ca492ca73e8680n eopdate:20220525T160752Z n”、body参数做sha256摘要后转十六进制为e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ctyuneoprequestid:27cfe4dce64045f692ca492ca73e8680n eopdate:20220525T160752Z nnne3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 sigture 示例2: 假设query 不为空 、需要进行签名的Header排序后的组合列表为“ctyuneoprequestid:27cfe4dce64045f692ca492ca73e8680n eopdate:20220525T160752Z n”、body参数做sha256摘要后转十六进制为e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ctyuneoprequestid:27cfe4dce64045f692ca492ca73e8680n eopdate:20220525T160930Znnaa1&bb2ne3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 3.2 构造动态秘钥kdate。 3.2.1 使用eopdate作为数据,sk作为密钥,算出ktime。 3.2.2 使用ak作为数据,ktime作为密钥,算出kAk。 3.2.3 使用eopdate的年月日值作为数据,kAk作为密钥,算出kdate。 步骤 构造动态密钥的方法 : eopdate yyyymmddTHHMMSSZ(20211221T163614Z)(年月日T时分秒Z) Ktime 使用eopdate作为数据,sk作为密钥,算出ktime。 Ktime hmacSha256(eopdate,sk) kAk 使用ak作为数据,ktime作为密钥,算出kAk。 kAk hmacsha256(ak,ktime) kdate 使用eopdate的年月日值作为数据,kAk作为密钥,算出kdate。 kdate hmacsha256(eopdate,kAk) 3.3 构造Signature 。使用kdate作为密钥、sigture作为数据,将其得到的结果进行base64编码得出Signature 步骤 构造签名的方法 Signature 1)hmacsha256(sigture,kdate) 2)将上一步的结果进行base64加密得出Signature 3.4 构造EopAuthorization。 3.4.1 构造Headers。 3.4.2得到EopAuthorization。 EopAuthorization:ak Headersxxx Signaturexxx 步骤 构造EopAuthorization的方法 : Headers 将需要进行签名的请求头字段以 “headername”的形式、以“;”作为间隔符、以英文字母表作为headername的排序依据将它们拼接起来。 例如(假设你需要将ctyuneoprequestid、eopdate都要签名):Headers ctyuneoprequestid;eopdate EopAuthorization EopAuthorization:ak Headersxxx Signaturexxx。注意,ak、Headers、Signature之间以空格隔开。 例如:EopAuthorization:ak Headersctyuneoprequestid;eopdate SignatureNlMHOhk5bVfZ9MwDSSJydcZjjENmDtpNYigJGVb 注意:如果你需要进行签名的Header不止默认的ctyuneoprequestid和eopdate,那么你需要在httpclient的请求头部中加上,并且EopAuthorization中也需要增加 三、 签名示例