跳到主内容
大鹏云 大鹏云 DAPENG CLOUD
首页 · 帮助中心 · 常见故障 · API 签名验证失败的常见原因

API 签名验证失败的常见原因

请求头齐全但仍返回签名错误。大鹏云 API 采用 HMAC-SHA256 签名,签名密钥是 Secret 的 SHA-256 值,任何一个环节不一致都会导致验签失败。

常见原因

  • 签名密钥用错:应使用 Secret 的 SHA-256 值作为 HMAC 密钥,而不是 Secret 原文;
  • 待签名字符串拼接顺序、分隔符或大小写与文档不符;
  • URL 编码不一致(参数在拼接前后被重复编码);
  • X-Timestamp 与签名时使用的时间戳不是同一个值;
  • 输出未转为小写十六进制(hex)格式。

排查步骤

  1. 严格按文档顺序拼接待签名字符串,逐字符核对拼接结果。
  2. 计算签名密钥:
signKey = sha256_hex(你的Secret)
signature = hmac_sha256_hex(signKey, 待签名字符串)
  1. 用命令行手工验证一次,与程序输出对比:
echo -n "你的Secret" | sha256sum
echo -n "待签名字符串" | openssl dgst -sha256 -hmac "signKey"
  1. 确认整个请求周期内只生成一次 X-Timestamp,签名与发送使用同一值。
  2. 检查参数是否被框架自动做了二次 URL 编码,保持原文参与签名。
提示:最常见的错误就是忘记对 Secret 先做一次 SHA-256,以及时间戳前后不一致,请优先检查这两点。

仍未解决

请通过「支持服务 → 工单」反馈,附上:待签名字符串、计算出的签名、完整请求示例(Secret 请勿提交)与返回报文,客服将协助比对定位。

这篇文章对你有帮助吗?