使用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
相关产品推荐
相关产品推荐

