Azure AD中基于证书的身份验证(CBA)无法正常工作
Azure AD 基于证书的身份验证(CBA)自签名证书访问失败排查
不用急着更换证书,先排查以下几个自签名证书配置的常见遗漏点:
检查证书链完整性:从Key Vault生成的自签名证书,需确保本地同时安装用户证书和对应的根CA证书。仅安装用户端证书的话,Azure AD无法验证信任链,会导致认证失败。将上传到Azure AD的根证书导入本地电脑的「受信任的根证书颁发机构」存储区后再测试。
验证证书属性合规性:Azure AD对CBA证书有硬性要求,确认你的自签名证书满足:
- 密钥用法包含「数字签名」(Key Usage=Digital Signature)
- 增强型密钥用法(EKU)包含「客户端身份验证」(OID: 1.3.6.1.5.5.7.3.2)
- 证书主体名称或SAN(主体替代名称)与Azure AD用户的UPN/邮箱地址匹配
- 采用RSA密钥,长度≥2048位
处理CRL相关问题:测试环境未配置CRL路径时,Azure AD默认会尝试校验证书吊销状态。若自签名证书无CRL分发点(CDP),可能因无法验证吊销状态被拒绝。可通过两种方式临时解决:
- 重新生成自签名证书时添加CDP扩展(哪怕是测试用的空路径或本地路径,比如
file:///C:/test.crl) - 在Azure AD的CBA配置中关闭「检查证书吊销列表」选项(仅限测试环境,生产环境不推荐)
- 重新生成自签名证书时添加CDP扩展(哪怕是测试用的空路径或本地路径,比如
确认私钥权限与存储:私钥必须存放在本地「个人」证书存储区,且当前登录用户拥有私钥的读取权限。可通过
certmgr.msc打开证书管理器,右键证书→「所有任务」→「管理私钥」,检查当前用户的权限配置。校验Azure AD端配置:确认上传到Azure AD的是自签名证书的根CA证书,而非用户端证书。在Azure AD门户的「证书颁发机构」列表中,核对证书指纹与本地根证书一致,且状态为「已启用」。
若以上排查均无问题仍无法访问,再考虑更换证书(比如用AD CS生成测试证书,或重新在Key Vault生成符合所有要求的自签名证书)。
内容的提问来源于stack exchange,提问作者Eldos
相关产品推荐
相关产品推荐

