网络安全配置中信任用户证书时,证书固定不起作用



我正在学习Android的网络安全配置。这是我的配置文件

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">*.xx.com</domain>
<pin-set expiration="2031-05-01">
<!-- these two are certificates in *.xx.com certificate chains -->
<pin digest="SHA-256">8Rxjasdfk7jjlasdnP6sdkxnjkkqaGZfjnxkynxndA=</pin>
<pin digest="SHA-256">K0z9yJZklpaxAjkasxYjkLsUzxdUoewxj1z3z8lNgA=</pin>
</pin-set>
</domain-config>
</network-security-config>

当我使用Charles捕获网络流量时,*.xx.com下的url仍然可以正常加载。在我看来,配置<pin-set>会导致连接失败,因为来自Charles的证书无法通过证书绑定验证。

如果我删除<certificates src="user"/>,将无法加载*.xx.com下的证书固定作品和url。我怀疑信任用户证书会使证书钉死不起作用。我做错什么了吗?

我犯了一个错误。这里的域名应该是xx.com,而不是*.xx.com,而*.xx.com在OkHttp CertificatePinner中使用。

最新更新