关于android:networkSecurityConfig的添加

上一篇提过,为了能够Charles能够抓包,在代码里面添加了
这里写图片描述

android:networkSecurityConfig="@xml/network_security_config"

为什么要添加这个?

我在官方的文档找到了答案

网络安全性配置特性让应用可以在一个安全的声明性配置文件中自定义其网络安全设置,而无需修改应用代码。可以针对特定域和特定应用配置这些设置。此特性的主要功能如下所示:
  • 自定义信任锚:针对应用的安全连接自定义哪些证书颁发机构 (CA) 值得信任。例如,信任特定的自签署证书或限制应用信任的公共 CA 集。
  • 仅调试重写:在应用中以安全方式调试安全连接,而不会增加已安装用户的风险。
  • 明文通信选择退出:防止应用意外使用明文通信。
  • 证书固定:将应用的安全连接限制为特定的证书。

具体细节可以参考:
https://developer.android.google.cn/training/articles/security-config.html

我大致归类了一下:
1. 如果你设置了代理去抓包一下几种配置都是没有问题的:

配置自定义 CA
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">example.com</domain>
        <trust-anchors>
            <certificates src="@raw/my_ca"/>
        </trust-anchors>
    </domain-config>
</network-security-config>
限制可信 CA 集
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">secure.example.com</domain>
        <domain includeSubdomains="true">cdn.example.com</domain>
        <trust-anchors>
            <certificates src="@raw/trusted_roots"/>
        </trust-anchors>
    </domain-config>
</network-security-config>
信任附加 CA
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="@raw/extracas"/>
            <certificates src="system"/>
        </trust-anchors>
    </base-config>
</network-security-config>

以上配置,如果没有设置代理,会存在一种风险:移除代理后,会出现网络访问失败的情况,这个时候需要你把AndroidMainfest.xml里面的android:networkSecurityConfig给去掉即可。

2.如果不想把AndroidMainfest.xml的安全设置去掉也是可以的:

使用以下方法:


<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="@raw/debug_cas"/>
        </trust-anchors>
    </debug-overrides>
</network-security-config>

这样就不会影响到网络访问了。

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值