ECS API中Signature错误的排查方法

简介: Signature的生成方法 将get中提交的参数(除了aks以外所有的参数)按照一定的组成规则拼成一个字符串,前面再加上GET&/&组成StringToSign,然后对StringToSign做 HMAC计算,以Access Key Secret+一个“&”号为HMAC计算的key,最终算出的字符串就是Signature。

Signature的生成方法

将get中提交的参数(除了aks以外所有的参数)按照一定的组成规则拼成一个字符串,前面再加上GET&/&组成StringToSign,然后对StringToSign做 HMAC计算,以Access Key Secret+一个“&”号为HMAC计算的key,最终算出的字符串就是Signature。

排查思路

若碰到反馈Signature错误,可以排查以下几点:

  1. 在构造“StringToSign”时是否对key值做了A-Z的字典排序
  2. 是否将所有的参数都放入了StringToSign
  3. 计算前是否对StringToSign中的值做了urlencode,即将一些特殊的字符替换成类似%3D这样的字符串,如“=”需要替换成“%3D”,“/”要替换成“%2F”等,参见下述说明:
    a、 对于字符 A-Z、a-z、0-9 以及字符“-”、“_”、“.”、“~”不编码;

b、 对于其他字符编码成 “%XY” 的格式,其中 XY 是字符对应 ASCII 码的 16 进制表示。比如英文的双引号(”)对应的编码就是 %22
c、 对于扩展的 UTF-8 字符,编码成 “%XY%ZA…” 的格式;
d、 需要说明的是英文空格( )要被编码是 %20,而不是加号(+)。

  1. 是否使用了指定的算法,目前Signature需要使用HMAC-SHA1算法,在Java中通过Mac mac = Mac.getInstance("HmacSHA1");来获得HMAC-SHA1算法的对象
  2. 检查HMAC-SHA1运算时是否是将Access Key Secret+&作为key(如Access Key Secret为abc,那么使用“abc&”作为运算的key),运算过程编码使用UTF-8编码

以下是一个例子

1、 比如说要查询可用的镜像,先加入除了Signature以外所有的参数(值被忽略):

[ImageOwnerAlias, SignatureVersion, Action, Format, PageSize, SignatureNonce, Version, AccessKeyId, SignatureMethod, RegionId, Timestamp]

2、 对它们进行字典排序:

[AccessKeyId, Action, Format, ImageOwnerAlias, PageSize, RegionId, SignatureMethod, SignatureNonce, SignatureVersion, Timestamp, Version]

3、 挨个将它们拼接在一起(注意这个时候Timestamp中的值就已经经过了urlencode了,将“:”替换为“%3A”):

AccessKeyId=6olc8au16tjr574v222c923p&Action=DescribeImages&Format=XML&ImageOwnerAlias=system&PageSize=10&RegionId=cn-hangzhou&SignatureMethod=HMAC-SHA1&SignatureNonce=352f98b6-5fbe-489c-b8a4-5d484939a8d5&SignatureVersion=1.0&Timestamp=2015-09-12T07%3A45%3A58Z&Version=2014-05-26

4、 在前面加上GET&/&:

GET&/&AccessKeyId=6olc8au16tjr574v222c923p&Action=DescribeImages&Format=XML&ImageOwnerAlias=system&PageSize=10&RegionId=cn-hangzhou&SignatureMethod=HMAC-SHA1&SignatureNonce=352f98b6-5fbe-489c-b8a4-5d484939a8d5&SignatureVersion=1.0&Timestamp=2015-09-12T07%3A45%3A58Z&Version=2014-05-26

5、 再对整个字符串做urlencode,可以看到其中的“/”、“=”和参数键值对中的“&”都已经被替换,注意最前面的GET之后的两个“&”并没有被替换:

GET&%2F&AccessKeyId%3D6olc8au16tjr574v222c923p%26Action%3DDescribeImages%26Format%3DXML%26ImageOwnerAlias%3Dsystem%26PageSize%3D10%26RegionId%3Dcn-hangzhou%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D352f98b6-5fbe-489c-b8a4-5d484939a8d5%26SignatureVersion%3D1.0%26Timestamp%3D2015-09-12T07%253A45%253A58Z%26Version%3D2014-05-26

6、 然后构造HMAC运算的key,很简单,将Access Key Secret再加上一个“&”即可:

IamAccessKeySecret&

7、 扔给电脑做HMAC-SHA1运算,然后算出来一个最终的字符串:

53wPekiWxh45TgPxVb4bkXrzZ6M=

8、 这个字符串就是最终的Signature值,然后将其加入到HTTP get请求中,组成最终的get参数字符串,特别要注意Signature加入后需要确认其中的特殊符号如“=”是否被转换为%xx的字符串。

ImageOwnerAlias=system&SignatureVersion=1.0&Action=DescribeImages&Format=XML&PageSize=10&SignatureNonce=352f98b6-5fbe-489c-b8a4-5d484939a8d5&Version=2014-05-26&AccessKeyId=6olc8au16tjr574v222c923p&Signature=53wPekiWxh45TgPxVb4bkXrzZ6M%3D&SignatureMethod=HMAC-SHA1&RegionId=cn-hangzhou&Timestamp=2015-09-12T07%3A45%3A58Z

9、 然后就可以向ECS的API服务器发送请求了

参考文档

1.官网的生成Signature文档:https://help.aliyun.com/document_detail/25492.html

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
存储 弹性计算 人工智能
阿里云服务器配置选择方法,八大使用场景选择合适的云服务器配置
本文详解阿里云ECS服务器在八大场景(新手入门、网站、数据库、大数据、游戏、视频、AI、高性能计算)中的配置选择策略,涵盖实例性能特点与推荐型号,助力用户精准选型,实现性能与成本的最优平衡。
|
3月前
|
JSON 监控 API
在线网络PING接口检测服务器连通状态免费API教程
接口盒子提供免费PING检测API,可测试域名或IP的连通性与响应速度,支持指定地域节点,适用于服务器运维和网络监控。
|
3月前
|
监控 测试技术 API
电商API常见错误排查指南:避免集成陷阱
API集成是电商开发的核心,但常因认证、数据、限流等问题引发错误,影响项目进度与用户体验。本文详解常见错误类型、排查步骤与预防策略,结合Python示例指导开发者高效应对。通过日志分析、数据校验、速率监控等手段,帮助您系统化规避集成陷阱,提升开发效率与系统稳定性。
148 0
|
23天前
|
人工智能 API 开发者
图文教程:阿里云百炼API-KEY获取方法,亲测全流程
本文详细介绍了如何获取阿里云百炼API-KEY,包含完整流程与截图指引。需先开通百炼平台及大模型服务,再通过控制台创建并复制API-KEY。目前平台提供千万tokens免费额度,适合开发者快速上手使用。
449 5
|
4天前
|
弹性计算 定位技术 数据中心
阿里云服务器选择方法:配置、地域及付费模式全解析
2025阿里云服务器选购指南:就近选择地域以降低延迟,企业用户优选2核4G5M带宽u1实例,仅199元/年;个人用户可选2核2G3M带宽ECS,99元/年起。长期稳定业务选包年包月,短期或波动场景用按量付费,轻松搭建网站首选高性价比配置。
|
2月前
|
弹性计算 小程序 容灾
2025购买阿里云服务器配置选择方法:企业+个人+学生攻略
2025年阿里云服务器购买省钱攻略,涵盖个人、中小企业及高性能配置推荐。个人用户优选38元轻量或99元ECS,企业用户选199元2核4G服务器,游戏用户适合4核16G或8核32G配置,详情请参考最新活动及攻略。
419 11
|
8月前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
2月前
|
缓存 监控 前端开发
详述uniapp项目部署于Nginx服务器的配置优化方法。
综上所述,uniapp项目部署于Nginx的优化方法多种多样,应根据实际情况灵活地采取合适的策略。配置后持续监控和调试,适时调整配置以保持最佳性能,并确保随着应用需求和访问模式的变化,服务器配置得到适当的更新和优化。
126 0
|
3月前
|
安全 关系型数据库 网络安全
安全加固:启动PostgreSQL 14服务器SSL加密的方法指南在CentOS 7环境中
通过上述步骤,你可以为PostgreSQL数据库服务器设置SSL加密,从而增加数据在传输中的安全性。确保维持证书的有效性,并且定期更新和管理密钥,以防止未授权访问。
144 0
|
4月前
|
缓存 负载均衡 监控
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。

热门文章

最新文章