You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生成JWT签名调用API遇Invalid SCA错误,求私钥格式及解决方案

问题分析与解决方案

1. 私钥的正确格式要求

RS256算法签名JWT时,必须使用PEM编码的RSA私钥,常见两种合规格式:

  • PKCS#1格式:
    -----BEGIN RSA PRIVATE KEY-----
    [base64编码的私钥内容,每行64字符左右]
    -----END RSA PRIVATE KEY-----
    
  • PKCS#8格式(更通用):
    -----BEGIN PRIVATE KEY-----
    [base64编码的私钥内容,每行64字符左右]
    -----END PRIVATE KEY-----
    

如果你的txt文件只有裸base64密钥内容(无首尾标记),需要手动添加标记并格式化每行长度为64字符(可用fold -w 64命令)。

2. 现有命令的核心错误

  • 时间戳逻辑错误:iat(签发时间)1706896701晚于exp(过期时间)1706896597,导致JWT本身无效,API直接判定非法。
  • URL-safe Base64处理不彻底:原命令中s/\+/-/只替换第一个+,未全局替换,应该用tr一次性完成所有字符替换。

3. 修正后的完整JWT生成命令

# 生成JWT Header,处理为URL-safe Base64
token_header=$(echo -n '{"alg":"RS256","typ":"JWT"}' | base64 | tr -d '\n=' | tr '+' '-' | tr '/' '_')

# 生成JWT Payload,确保iat < exp(用当前时间作为iat,当前时间+3600秒作为exp)
current_time=$(date +%s)
exp_time=$((current_time + 3600))
token_body=$(echo -n "{\"exp\": $exp_time,\"iat\": $current_time,\"iss\":\"123456-us-xxx\",\"jti\":\"123456_xxx_123\",\"SystemInitiated\":true}" | base64 | tr -d '\n=' | tr '+' '-' | tr '/' '_')

# 生成签名,处理为URL-safe Base64
token_signature=$(echo -n "$token_header.$token_body" | openssl dgst -sha256 -binary -sign PrivateKey.key | base64 | tr -d '\n=' | tr '+' '-' | tr '/' '_')

# 拼接完整JWT
complete_jwt_token="$token_header.$token_body.$token_signature"
echo "$complete_jwt_token"

4. 私钥格式转换(若当前为裸txt密钥)

如果你的PrivateKey.txt是无首尾标记的裸base64内容,执行以下命令转换成PKCS#1格式的PEM私钥:

echo "-----BEGIN RSA PRIVATE KEY-----" > PrivateKey.key
fold -w 64 PrivateKey.txt >> PrivateKey.key
echo "-----END RSA PRIVATE KEY-----" >> PrivateKey.key

若为PKCS#8格式,将首尾标记替换为-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----即可。

5. 验证与curl请求

  • 验证JWT有效性:可使用openssl用对应公钥验证签名(确保签名正确):
    echo -n "$token_header.$token_body" > jwt_data.tmp
    echo -n "$token_signature" | tr '-' '+' | tr '_' '/' | base64 -d > jwt_sig.tmp
    openssl dgst -sha256 -verify PublicKey.pem -signature jwt_sig.tmp jwt_data.tmp
    
  • 正确的curl请求示例:
    curl -H "Authorization: Bearer $complete_jwt_token" https://your-api-endpoint.com
    

内容的提问来源于stack exchange,提问作者Mohammed Inayathullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:18:08