赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 对象存储
  4. 开发参考
  5. OSS签名机制指南
  6. 签名错误问题排查

签名错误问题排查

  • OSS签名机制指南
  • 发布于 2025-04-21
  • 0 次阅读
文档编辑
文档编辑

本文主要介绍OSS签名错误的常见场景以及排查方法。

签名错误报错信息

<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>SignatureDoesNotMatch</Code>
  <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
  <RequestId>646DCB189AE2D1333018****</RequestId>
  <HostId>bucket.oss-cn-hangzhou.aliyuncs.com</HostId>
  <OSSAccessKeyId>LTAI******** </OSSAccessKeyId>
  <SignatureProvided>tPN3LTAI******** </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 20 47 4D 54 0A 2F 64 69 6E 61 72 79 2F 3F 61 63 6C </StringToSignBytes>
  <EC>0002-00000040</EC>
</Error>

使用API接口或者SDK访问OSS时,客户端需要携带签名信息以供OSS服务端进行身份认证。如果服务器返回如上所示的响应,说明您在请求中提供的签名与服务端计算的不一致,导致请求被拒绝。

签名错误排查方法

如果您的请求出现签名报错,您可以按照以下步骤进行排查。

  1. 确认签名所用的AccessKey ID与AccessKey Secret是否填写正确。

    您可以使用AccessKey ID与AccessKey Secret登录ossbrowser来验证正确性。具体步骤,请参见安装并登录ossbrowser。

  2. 检查签名算法是否正确。

    OSS提供两种携带签名的请求方式,分别为在Header中包含签名和在URL中包含签名。关于这两种签名方式的算法说明如下:

    • 在Header中包含签名

      StringToSign = VERB + "\n"
                    + Content-MD5 + "\n" 
                    + Content-Type + "\n" 
                    + Date + "\n" 
                    + CanonicalizedOSSHeaders
                    + CanonicalizedResource
      Signature = base64(hmac-sha1(AccessKeySecret, StringToSign)
    • 在URL中包含签名

      StringToSign = VERB + "\n" 
                    + CONTENT-MD5 + "\n" 
                    + CONTENT-TYPE + "\n" 
                    + EXPIRES + "\n" 
                    + CanonicalizedOSSHeaders
                    + CanonicalizedResource
      Signature = urlencode(base64(hmac-sha1(AccessKeySecret, StringToSign)))

    如果业务场景允许,推荐您使用SDK访问OSS,免去手动计算签名的过程。具体步骤,请参见使用阿里云SDK发起请求。

  3. 比对响应体中的StringToSign字段与您发起请求的内容是否存在差异。

    StringToSign字段表示待签字符串,即签名算法中需要使用AccessKey Secret进行加密的内容。

    请求示例如下:

    PUT /bucket/abc?acl
    Date: Wed, 24 May 2023 02:12:30 GMT
    Authorization: OSS qn6q**************:77Dv****************
    x-oss-abc: mymeta

    以上请求计算得到的待签字符串应为:

    PUT\n\n\nWed, 24 May 2023 02:12:30 GMT\nx-oss-abc:mymeta\n/bucket/abc?acl

签名错误常见场景

关于签名错误常见场景的更多信息,请参见0002-00000040。

相关文章

使用REST API发起请求 2025-04-21 17:16

您可以直接发起REST API请求。使用REST API发起请求适用于对程序自定义要求较高的场景。您需要手动编写代码计算签名并将签名添加到REST API请求中。OSS仅支持虚拟托管(Virtual Hosted)风格的REST API请求。

V1签名升级为V4签名 2025-04-21 17:16

OSS 将逐步下线 V1 签名,请尽快升级至更安全的 V4 签名,以确保应用稳定运行。 如何从V1签名升级为V4签名 根据当前使用方式,参考对应的指引完成升级。

签名错误问题排查 2025-04-21 17:16

本文主要介绍OSS签名错误的常见场景以及排查方法。 签名错误报错信息

签名版本4(推荐) 2025-04-21 17:16

向 OSS 发起请求时,添加包含 V4 签名的 Authorization 请求头(Header),以确保请求能够通过身份验证。优先使用 OSS 提供的 SDK 发起请求,因为 SDK 已集成复杂的 V4 签名算法。只有在无法使用 SDK 时,才需要参考本文自行实现 V4 签名算法。 SDK 签名实

签名版本1 2025-04-21 17:16

在OSS中,使用HTTP请求的Authorization Header来携带签名信息是进行身份验证的最常见方法。除了使用POST签名和URL签名之外,所有的OSS操作都需要通过Authorization Header来进行身份验证。本文介绍如何使用V1签名算法来在Header中包含签名。

签名版本4(推荐) 2025-04-21 17:16

除了通过HTTP请求头部的Authorization字段进行签名授权外,您还可以生成一个包含签名和其他必要请求信息的预签名URL。通过这种方式,您可以在不透露访问凭证的情况下,授予第三方在特定有效期内对OSS资源的访问权限。本文介绍如何使用V4签名算法实现在URL中包含签名。 SDK签名实现 OSS

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号