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

使用acquire_token_with_client_certificate获令牌遇RSA密钥长度错误

解决Azure AD的AADSTS50032密钥长度错误问题

这问题我之前帮好几个开发者排查过,Azure AD报错说你的RSA密钥是1024位,但你明明用的是更长的密钥对吧?大概率是这几个环节出了问题,咱们一步步捋:

1. 先实打实确认你的证书/密钥真的是2048位以上

别光信生成时的配置,用openssl命令验一下最靠谱:

  • 检查证书文件的密钥长度:
    openssl x509 -in your-cert.pem -text -noout | grep "Public-Key"
    
  • 检查私钥文件的长度:
    openssl rsa -in your-private-key.pem -text -noout | grep "Private-Key"
    

正常输出应该是Public-Key: (2048 bit)或者更大的数值,如果显示1024,那说明你手里的密钥确实不符合要求,得重新生成2048位及以上的证书。

2. 检查Azure应用注册里的证书配置

有时候你以为上传了新证书,但可能:

  • 旧的1024位证书还挂在应用注册里没删,Azure验证时优先用了旧的;
  • 上传新证书时操作失误,实际没传成功。
    去Azure门户的「应用注册」→你的应用→「证书和密码」里,确认所有已上传的证书都是2048位及以上的,把旧的1024位证书删掉,重新上传正确的证书。

3. 检查代码里加载证书的细节

确保你在acquire_token_with_client_certificate里指定的PEM文件是正确的那个,别不小心引用了旧的1024位证书路径。举个例子:

result = context.acquire_token_with_client_certificate(
    resource="https://management.azure.com/",
    client_id="你的客户端ID",
    certificate_path="/path/to/正确的2048位证书.pem",
    thumbprint="对应证书的指纹"
)

这里的certificate_path必须指向你刚验证过的2048位证书,同时thumbprint也要和这个证书的指纹完全匹配,别搞混了。

4. 检查PEM文件的内容格式

有些情况下,PEM文件里可能混了多个证书/密钥条目——比如同时存了旧的1024位和新的2048位密钥,Azure读取时可能拿到了旧的那个。打开你的PEM文件,确保里面只有一组证书+私钥,且都是符合要求的长度,多余的旧条目直接删掉。

要是以上步骤都试过还不行,那就重新生成一个全新的2048位证书,再上传到Azure应用注册,用新证书重新测试,大概率就能解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:25:41