云平台开发辅助

AWS SigV4 签名调试

填入实际请求字段,逐段核对请求头签名的计算过程。

AWS SigV4 签名调试

请求输入

附加请求头(每行一条)

文本正文(UTF-8)

签名结果

仅在浏览器本地计算,不发送请求。请只用测试凭据,勿填生产密钥。

签名选项与参考值

UTC 时间

参考规范请求

输入请求 URL 后开始。

报告会遮盖 Session Token;脱敏的规范请求不能用于重算签名。

收到 SignatureDoesNotMatch 时,先别猜密钥错了。AWS SigV4 签名调试把请求路径、查询参数、标头和正文哈希组成规范请求,方便与错误响应中的值逐行对比。

可载入 AWS 官方公开的测试凭据和固定时间,验证自己的实现。页面只在本地计算,不发送请求,也无法判断 IAM 是否授权。

为什么用 AWS SigV4 签名调试

把“签名不匹配”拆成可观察的字节差异。

看见编码与排序变化

AWS SigV4 签名调试按编码后的名称和值排序查询参数,保留重复键,并整理请求头空格。`+` 与 `%20`、额外斜杠或漏签标头造成的差别会直接出现在规范请求里。

请求路径与重复查询键流向排序后的规范请求,路径斜杠仍保持原样。

从请求追到签名

规范请求哈希、作用域、待签名字符串和测试签名依次呈现。把 AWS 返回的规范请求贴入参考栏,AWS SigV4 签名调试会标出第一处不同的段落,而不是只给一个失败标记。

规范请求依次进入哈希、待签名字符串和本地签名,并与参考值并排比较。

按固定输入复现一次签名

01

先固定时间与样例

页面只在首次载入时填入当前 UTC 时间;“现在”按钮才会刷新它。AWS S3 示例使用公开的虚构凭据和已知签名,替换现有字段前会先预览。

02

先核规范请求再核密钥

手动运行或按 Ctrl/Cmd + Enter。先看 URI、排序后的查询参数、规范化标头和正文哈希;S3 模式会按所选哈希方式加入 x-amz-content-sha256。

03

把差异定位到字段

不填密钥也能对比参考规范请求。只有核对最终签名才需要一次性测试凭据;通用报告会遮盖 Session Token,精确规范请求请单独谨慎复制。

从请求字段到可比对的签名轨迹

六段规范请求

方法、路径、查询串、规范标头、SignedHeaders 和正文哈希按 SigV4 格式拼接。重复查询键保留,`+` 编成 `%2B`,不会当成表单空格。

待签名字符串

展示规范请求的 SHA-256 和日期、区域、服务组成的作用域。区域或服务不同,会同时改变待签名字符串与派生签名密钥。

可选测试凭据

没有密钥也能完成结构诊断;填入一次性测试 Access Key ID 和 Secret Access Key 后,才计算 Signature 与 Authorization 请求头。页面不展示原密钥或派生密钥链。

定位参考差异

逐行对比参考规范请求,并按值对比 64 位十六进制签名。SigV4 签名不匹配可被定位到输入差异,但本地相等不代表 AWS 已接受请求。

本地计算的真实边界

只处理请求头签名
这里只计算 AWS4-HMAC-SHA256 的 Authorization 请求头;不生成预签名 URL,也不处理 SigV4a、V2、分块上传或原始 cURL/HAR 文件。
不代替 AWS 验证
工具不会向 AWS 或输入的 URL 发请求。测试 HMAC 相等不能证明凭据有效、IAM 权限或代理转发后的请求字节与当前输入一致。
路径与正文不静默修复
S3 对象路径不会被归一化;含糊的点段和编码斜杠会报错。正文只按粘贴的 UTF-8 文本计算哈希,不代表文件或流式上传的字节。
临时凭据可能出现在原文
Session Token 会进入 x-amz-security-token 标头。精确规范请求可能包含该值;通用报告会遮盖它,因此不能拿脱敏报告重算签名。不要填入生产密钥。

关于 AWS SigV4 签名调试的常见问题

使用 IAM 身份验证向 API Gateway 发出 SigV4 请求时,如何排查签名不匹配?

先把签名器生成的规范请求与 AWS 错误响应中的规范请求对齐,再比较待签名字符串。AWS SigV4 签名调试会指出参考文本首个不同的段落;优先查方法、URI 编码、查询排序、标头和正文哈希。

SignatureDoesNotMatch 错误该怎么解决?

复现服务实际收到的请求。代理可能改写路径、查询串或标头;随后检查时间、区域、服务及测试凭据是否配对。此页只做本地计算,无法替 AWS 判断权限。

没有 Secret Access Key 能检查 SigV4 吗?

能重建规范请求、哈希与待签名字符串,也能对比参考文本。最终 HMAC 必须使用对应的 Secret Access Key;未提供时页面不会伪造一个签名。

AccessDenied 能说明 SigV4 签名正确吗?

单看这个错误不足以概括具体服务的认证和授权过程。本页没有发出请求,也不知道 IAM 策略;请结合服务日志与 AWS 的权限排查工具判断。

在哪里对比 AWS 计算的规范请求?

部分 AWS 错误响应会提供规范请求或待签名字符串,SDK 调试日志也可显示客户端版本。把规范请求粘到参考栏即可定位首个差异;粘贴前先移除真实 Session Token。

还有疑问?

现在使用 AWS SigV4 签名调试

先用公开的 S3 测试向量确认计算,再放入自己的非生产请求逐字段比较;AWS SigV4 签名调试全程不发送请求。