すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:署名エラーのトラブルシューティング

最終更新日:Dec 15, 2023

このトピックでは、Object Storage Service (OSS) 署名エラーのトラブルシューティング方法について説明します。

エラーメッセージ

<?xml version="1.0" encoding="UTF-8"?>
<エラー>
  <Code>SignatureDoesNotMatch</Code>
  <Message>The request signature we calculated does not match the signature you provided. キーと署名方法を確認します。</Message>
  <RequestId>646DCB189AE2D1333018 ****</RequestId>
  <HostId>bucket.oss-cn-hangzhou.aliyuncs.com</HostId>
  <OSSAccessKeyId>LTAI5tMw7e8zyBazfpSS ****</OSSAccessKeyId>
  <SignatureProvided>tPN3MChhuKk2XixolQLonoJW ****</SignatureProvided>
  <StringToSign>PUT\n\n\nTue, 23 May 2023 15:24:55 GMT\n/bucket/?acl</StringToSign>
  <StringToSignBytes>50 55 54 0A 0A 0A 54 75 65 2C 20 32 33 20 4D 61 79 20 32 30 32 33 20 31 35 3A 32 34 3A 35 35 3A 34 35 35 47 4D 54 0A 64 69 6E 61 72 79 2F 3F 61 63 6C </StringToSignBytes>
  <EC>0002-00000040</EC>
</エラー> 

API操作を呼び出すか、OSS SDKを使用してOSSにアクセスする場合、クライアントはOSSサーバーがID認証を実行するための署名を含める必要があります。 サーバーが上記のエラーメッセージを返した場合、リクエストで指定した署名は、サーバーによって計算された署名と一致しません。 その結果、リクエストは拒否されます。

トラブルシューティング

リクエストで署名エラーが発生した場合は、次の手順を実行してエラーをトラブルシューティングします。

  1. AccessKey IDとAccessKey secret が正しいことを確認してください。

    AccessKey IDとAccessKey secretを使用してossbrowserにログインし、AccessKey IDとAccessKey secretが有効かどうかを確認できます。 詳細については、「ossbrowserへのインストールとログイン」をご参照ください。

  2. 署名アルゴリズムが有効かどうかを確認します。

    OSSには、署名を含めることができる2つのリクエストメソッドがあります。 詳細については、「承認ヘッダーに署名を含める」および「URLに署名を追加する」をご参照ください。 次の項目は、2つの署名方法のアルゴリズムを示しています。

    • 承認ヘッダーに署名を含める

      StringToSign = VERB + "\n"
                    + Content-MD5 + "\n" 
                    + Content-Type + "\n" 
                    + Date + "\n" 
                    + CanonicalizedOSSHeaders
                    + CanonicalizedResource
      署名=base64(hmac-sha1(AccessKeySecret、StringToSign) 
    • URLへの署名の追加

      StringToSign = VERB + "\n" 
                    + CONTENT-MD5 + &quot;\ n&quot; 
                    +コンテンツタイプ+ &quot;\ n&quot; 
                    + EXPIRES + "\n" 
                    + CanonicalizedOSSHeaders
                    + CanonicalizedResource
      署名=urlencode(base64(hmac-sha1(AccessKeySecret、StringToSign))) 

    OSS SDKを使用してOSSにアクセスすることを推奨します。 これにより、署名を手動で計算する必要がなくなります。 詳細については、「概要」をご参照ください。

  3. レスポンス本文のStringToSignフィールドの値がリクエストの値と一致しているかどうかを確認します。

    StringToSignフィールドは、署名する文字列を指定します。これは、署名アルゴリズムでAccessKeyシークレットを使用して暗号化する必要があるコンテンツです。

    例:

    PUT /bucket/abc?acl
    日付: 5月24日水曜日2023 02:12:30 GMT
    承認: OSS qn6qrrqxo2oawuk53otf ****:77Dvh 5wQgIjWjwO/KyRt8dOP ****
    x-oss-abc: mymeta 

    上記のメソッドを使用して計算された署名される文字列:

    PUT\n\n\n水曜日、24 5月2023日02:12:30 GMT\nx-oss-abc:mymeta\n/bucket/abc?acl