":{"CodeN":100010,"Code":"SignatureDoesNotMatch","Message":"The request signatur...

2026年01月15日 11:28 processing

错误信息

{"ResponseMetadata":{"RequestId":"20260115112507BDF7EA572F970F5EC7B1","Action":"CVProcess","Version":"2022-08-31","Service":"cv","Region":"cn-north-1","Error":{"CodeN":100010,"Code":"SignatureDoesNotMatch","Message":"The request signature we calculated does not match the signature you provided. Check your Secret Access Key and signing method. Consult the service documentation for details."}}}

AI 解决方案

错误翻译

原文:The request signature we calculated does not match the signature you provided.
译文:我们计算出的请求签名与您提供的签名不匹配。
原因分析**
根本原因是**API请求的签名验证失败**。该错误通常由以下任一情况触发:
1.  服务端根据您的请求(如 `AccessKeySecret`、请求参数、时间戳等)计算出了一个签名。
2.  您在上传的请求中包含了一个签名。
3.  这两个签名值不一致,因此腾讯云API服务拒绝了此次请求。

此问题通常由 **`AccessKeySecret` 错误**、**时间戳不同步** 或 **签名算法/步骤执行有误** 导致。请按以下步骤检查:

1.  **核对 `AccessKeySecret`**:确认您代码中使用的 `SecretKey` 与云控制台获取的完全一致(注意大小写和空格)。
2.  **检查系统时间**:确保服务器/本地机器的时间与标准时间同步。签名依赖于请求时间戳 `Timestamp`,时间差过大(通常超过15分钟)会导致签名失效。同步NTP时间:
    
bash
# Linux 系统
sudo ntpdate time.windows.com
# 或使用 timedatectl 设置自动同步
sudo timedatectl set-ntp true
3.  **验证签名生成过程**:
    *   **检查签名版本**:确认您使用的签名方法(例如 `SignatureMethod` 为 `HmacSHA256`)与服务要求一致。
    *   **检查待签名字符串格式**:严格按照云服务API文档的要求,正确拼接HTTP方法、URI、查询参数和头部信息。
    *   **手动对比签名**:使用官方提供的签名工具(如腾讯云的[签名工具](https://console.cloud.tencent.com/api/explorer))生成一个签名示例,与您代码生成的签名进行比对。

预防措施**
1.  **封装并使用官方SDK**:强烈建议使用腾讯云官方提供的SDK进行API调用,SDK会自动处理签名计算和时间同步,避免手动实现的错误。例如 Python SDK:
    
python
from tencentcloud.common import credential
from tencentcloud.cvm.v20170312 import cvm_client, models

cred = credential.Credential("Your-SecretId", "Your-SecretKey")
client = cvm_client.CvmClient(cred, "ap-guangzhou")
req = models.DescribeInstancesRequest()
resp = client.DescribeInstances(req)

2.  **将密钥与代码分离**:不要将 `AccessKeySecret` 硬编码在源码中,应使用环境变量或安全的密钥管理系统来存储和读取。
    
bash
# 示例:使用环境变量
export TENCENTCLOUD_SECRET_ID='Your-SecretId'
export TENCENTCLOUD_SECRET_KEY='Your-SecretKey'
```