全部產品
Search
文件中心

CloudMonitor:簽名演算法:HMAC-SHA1

更新時間:Jan 27, 2024

目前,CloudMonitor只支援數位簽章演算法HMAC-SHA1。通過本文您可以瞭解數位簽章演算法HMAC-SHA1的操作方法。

操作步驟

  1. 準備可用的阿里雲存取金鑰。

    當HTTP請求產生簽名時,需要使用一對存取金鑰(AccessKey ID和AccessKey Secret)。

    說明

    您可以使用已存在的存取金鑰,也可以建立新的存取金鑰,但需要保證該密鑰處在啟用狀態。

  2. 產生請求的簽名字串。

    HTTP簽名字串由HTTP請求中的MethodHeaderBody資訊共同產生。

    SignString = VERB + "\n"
                 + CONTENT-MD5 + "\n"
                 + CONTENT-TYPE + "\n"
                 + DATE + "\n"
                 + CanonicalizedHeaders + "\n"
                 + CanonicalizedResource

    上述簽名字串中的\n表示換行逸出字元,+表示字串串連操作,其他部分定義如下表所示。

    名稱

    描述

    樣本

    VERB

    HTTP請求的方法名稱。

    PUT、GET、POST

    CONTENT-MD5

    HTTP請求中Body部分的MD5值。

    說明

    MD5必須為大寫字母和數字字串。

    0B9BE351E56C90FED853B32524253E8B

    CONTENT-TYPE

    HTTP請求中Body部分的類型。

    application/json

    DATE

    HTTP請求中的標準時間戳記頭。

    說明

    遵循RFC 1123格式,使用GMT標準時間。

    Mon, 3 Jan 2010 08:33:47 GMT

    CanonicalizedHeaders

    由HTTP請求中以x-cmsx-acs為首碼的自訂頭構造的字串。

    • x-cms-api-version:0.1.0

    • x-cms-signature

    CanonicalizedResource

    由HTTP請求資源構造的字串。

    /event/custom/upload

    上表中CanonicalizedHeaders和CanonicalizedResource構造方式如下:

    • CanonicalizedHeaders

      1. 將所有以x-cmsx-acs為首碼的HTTP要求標頭的名字轉換成小寫字母。

      2. 將所有CMS和ACS自訂要求標頭按照字典序的升序進行排序。

      3. 刪除要求標頭和內容之間分隔字元兩端出現的任何空格。

      4. 將所有的要求標頭和內容用\n分隔字元組合成最後的CanonicalizedHeaders。

    • CanonicalizedResource

      1. 將CanonicalizedResource設定為空白字串(””)。

      2. 將CanonicalizedResource中放入待訪問的URI,例如:/event/custom/upload

      3. 如果請求包含查詢字串(QUERY_STRING),則在CanonicalizedResource字串尾部添加?和查詢字串。

        其中QUERY_STRING是URI中請求參數按字典序排序後的字串,其中參數名和值之間用=相隔組成字串,並對參數名和值按照字典序升序排序,然後以&符號串連構成字串。其公式化描述如下:

        QUERY_STRING = "KEY1=VALUE1" + "&" + "KEY2=VALUE2"
  3. 產生請求的數位簽章。

    數位簽章公式如下:

    Signature=base16(hmac-sha1(UTF8-Encoding-Of(SignString),AccessKeySecret))

    簽名舉例:

    SignString="POST" + "\n"
    +"0B9BE351E56C90FED853B32524253E8B" + "\n"
    +"application/json" + "\n"
    +"Tue, 11 Dec 2018 21:05:51 +0800" + "\n"
    +"x-cms-api-version:1.0" + "\n"
    +"x-cms-ip:127.0.0.1" + "\n"
    +"x-cms-signature:hmac-sha1" + "\n"
    +"/metric/custom/upload"
    accesskey="testkey"
    accessSecret="testsecret" //簽名密鑰。

    簽名結果:

    1DC19ED63F755ACDE203614C8A1157EB1097E922