資源描述:
《阿里云-秘鑰管理服務(wù)-API文檔-D》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、密鑰管理服務(wù)API文檔密鑰管理服務(wù)/API文檔API文檔公共部分通訊協(xié)議KMS服務(wù)只支持使用HTTPS通道發(fā)送請(qǐng)求請(qǐng)求方法支持HTTPPOST和GET方法發(fā)送請(qǐng)求簽名機(jī)制KMS服務(wù)會(huì)對(duì)每個(gè)訪問的請(qǐng)求進(jìn)行身份驗(yàn)證,用戶需要在請(qǐng)求中包含簽名(Signature)信息。KMS通過(guò)使用AccessKeyID和AccessKeySecret進(jìn)行MAC(MessageAuthenticationCode)計(jì)算的方法來(lái)驗(yàn)證請(qǐng)求的發(fā)送者身份。AccessKeyID和AccessKeySecret由阿里云官方頒發(fā)給訪問者(可以通過(guò)阿里云官方網(wǎng)站申請(qǐng)和管理),其中AccessKeyID用于標(biāo)
2、識(shí)訪問者的身份;AccessKeySecret是用于加密簽名字符串和服務(wù)器端驗(yàn)證簽名字符串的密鑰,必須嚴(yán)格保密,只有阿里云和用戶知道。用戶在訪問時(shí),按照下面的方法對(duì)請(qǐng)求進(jìn)行簽名處理:使用請(qǐng)求參數(shù)構(gòu)造規(guī)范化的請(qǐng)求字符串(CanonicalizedQueryString)(a)按照參數(shù)名稱的字典順序?qū)φ?qǐng)求中所有的請(qǐng)求參數(shù)(包括文檔中描述的"公共請(qǐng)求參數(shù)"和給定了的請(qǐng)求接口的自定義參數(shù),但不能包括"公共請(qǐng)求參數(shù)"中提到Signature參數(shù)本身)進(jìn)行排序。注:當(dāng)使用GET方法提交請(qǐng)求時(shí),這些參數(shù)就是請(qǐng)求URI中的參數(shù)部分(即URI中"?"之后由"&"連接的部分)。(b)對(duì)每個(gè)請(qǐng)
3、求參數(shù)的名稱和值進(jìn)行編碼。名稱和值要使用UTF-8字符集進(jìn)行URL編碼,URL編碼的編碼規(guī)則是:●i.對(duì)于字符A-Z、a-z、0-9以及字符"-"、"_"、"."、"~"不編碼;●ii.對(duì)于其他字符編碼成"%XY"的格式,其中XY是字符對(duì)應(yīng)ASCII碼的16進(jìn)制20密鑰管理服務(wù)/API文檔表示。比如英文的雙引號(hào)(")對(duì)應(yīng)的編碼就是%22●iii.對(duì)于擴(kuò)展的UTF-8字符,編碼成"%XY%ZA…"的格式;●iv.需要說(shuō)明的是英文空格()要被編碼是%20,而不是加號(hào)(+)?!褡ⅲ阂话阒С諹RL編碼的庫(kù)(比如Java中的java.net.URLEncoder)都是按照"appl
4、ication/x-www-form-urlencoded"的MIME類型的規(guī)則進(jìn)行編碼的。實(shí)現(xiàn)時(shí)可以直接使用這類方式進(jìn)行編碼,把編碼后的字符串中加號(hào)(+)替換成%20、星號(hào)(*)替換成%2A、%7E替換回波浪號(hào)(~),即可得到上述規(guī)則描述的編碼字符串。```(b)對(duì)編碼后的參數(shù)名稱和值使用英文等號(hào)(=)進(jìn)行連接。(c)再把英文等號(hào)連接得到的字符串按參數(shù)名稱的字典順序依次使用&符號(hào)連接,即得到規(guī)范化請(qǐng)求字符串。StringToSign=HTTPMethod+"&"+percentEncode("/")+"&"+percentEncode(CanonicalizedQuer
5、yString)其中HTTPMethod是提交請(qǐng)求用的HTTP方法,比如GET。percentEncode("/")是按照1.b中描述的URL編碼規(guī)則對(duì)字符"/"進(jìn)行編碼得到的值,即"%2F"。percentEncode(CanonicalizedQueryString)是對(duì)第1步中構(gòu)造的規(guī)范化請(qǐng)求字符串按1.b中描述的URL編碼規(guī)則編碼后得到的字符串。使用上一步構(gòu)造的規(guī)范化字符串按照下面的規(guī)則構(gòu)造用于計(jì)算簽名的字符串:按照RFC2104的定義,使用上面的用于簽名的字符串計(jì)算簽名HMAC值。注意:計(jì)算簽名時(shí)使用的Key就是用戶持有的AccessKeySecret并加上一個(gè)
6、"&"字符(ASCII:38),使用的哈希算法是SHA1。按照Base64編碼規(guī)則把上面的HMAC值編碼成字符串,即得到簽名值(Signature)。將得到的簽名值作為Signature參數(shù)添加到請(qǐng)求參數(shù)中,即完成對(duì)請(qǐng)求簽名的過(guò)程。注意:得到的簽名值在作為最后的請(qǐng)求參數(shù)值提交給KMS服務(wù)器的時(shí)候,要和其他參數(shù)一樣,按照RFC3986的規(guī)則進(jìn)行URL編碼。https://kms.cn-hangzhou.aliyuncs.com/?Action=CreateKey&SignatureVersion=1.0&Format=json&Version=2016-01-20&Acce
7、ssKeyId=testid&SignatureMethod=HMAC-SHA1&Timestamp=2016-03-28T03:13:08Z以CreateKey為例,簽名前的請(qǐng)求URL為:20密鑰管理服務(wù)/API文檔AccessKeyId=testid&Action=CreateKey&Format=json&SignatureMethod=HMAC-SHA1&SignatureVersion=1.0&Timestamp=2016-03-28T03%3A13%3A08Z&Version=2016-01-20那么StringT