network-security-config配置SHA-256证书固定功能不生效求助
证书固定SHA-256哈希模式不生效问题排查方案
- 哈希前缀未清理:OkHttp CertificatePinner返回的哈希默认带有
sha256/前缀,而Android network-security-config要求仅填写Base64编码的哈希本体,需要手动删除前缀后再填入<pin>标签内。
正确配置示例:<network-security-config> <domain-config> <domain includeSubdomains="true">yourdomain.com</domain> <pin-set> <!-- 仅保留base64编码的哈希值,去掉sha256/前缀 --> <pin digest="SHA-256">7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=</pin> </pin-set> </domain-config> </network-security-config> - 固定对象不匹配:network-security-config的哈希校验对象是证书公钥的SHA-256哈希,如果你生成的是完整证书文件的哈希值,会出现匹配失败的情况。
- 证书链层级匹配错误:确认你生成哈希对应的证书,确实存在于服务端返回的证书链中。如果固定的是叶子证书,需确认服务端未更新证书;如果固定的是根/中间证书,需确认服务端返回的证书链包含对应层级的证书,未被本地代理或运营商篡改替换。
- 域名配置范围错误:检查
<domain>标签是否覆盖了你实际请求的完整域名,需要匹配子域名时必须添加includeSubdomains="true"属性,漏配域名会导致固定规则不生效。 - 系统版本适配问题:network-security-config的证书固定能力仅在Android 7.0(API 24)及以上版本原生支持,低于该版本的系统需要额外适配证书固定逻辑,仅配置XML文件不会生效。
内容的提问来源于stack exchange,提问作者blinker
相关产品推荐
相关产品推荐

