android7.0证书校验问题

安卓7.0系统之后,系统不再信任用户导入的证书,并且自己项目里面的自签名证书也会不受信任。这样就导致,第一:抓包软件可能抓不到https的请求,第二:如果你的证书不是ca的证书,是自签名的证书,将无法请求服务器。

在谷歌开发者文档上面可以看到解决方案https://developer.android.google.cn/training/articles/security-config。这篇文章只是对这个文档的一个总结。详细的内容请看上面的链接。

解决方式:

1.在项目目录main/res/xml下新建network-security-config.xml文件

2.在AndroidManifest.xml文件下的application节点添加

android:networkSecurityConfig="@xml/network_security_config"

 

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">域名</domain>
        <trust-anchors>
            <certificates src="user"/>
        </trust-anchors>
    </domain-config>
</network-security-config>

思考一:上面配置会让线上的包也会被抓到,如果我只想抓测试环境的包和debug下正式环境的包该如何改进这个配置?

解答一:通过配置多个dmain 的字段。把测试环境的域名加上,过滤正式环境的域名。这样达到只抓取测试服务器的域名了。如果你想在debug下抓正式环境的数据,那么在domain-config下添加 <debug-overrides>节点,然后再这个节点下添加正式环境的域名。这样正式环境就只在debug下才能被抓取了。<network-security-config>
    <domain-config>
        <debug-overrides>
            <domain includeSubdomains="true">正式环境域名</domain>
        </debug-overrides>
        <domain includeSubdomains="false">测试环境域名</domain>
        <trust-anchors>
            <certificates src="user"/>
        </trust-anchors>
    </domain-config>
</network-security-config>

思考二:但是有些公司测试环境,正式环境连得域名是一样的,只是dns做了转发,这类情况如何解决;

解答二:这里提供一个思路,通过在gradle配置里面设置一个boolean值来区分测试包还是正式包,如果是测试包,那么添加这个net_config的配置,否则正式包不配置。

思考三:大部分公司环境有多套:test,dev,uat等,那么一个个环境一起加总感觉麻烦,有没有方便的解决方式

解答三:比如你的环境有如下域名 test.csdn.com,dev.csdn.com,uat.csdn.com, 那么 你只要添加csdn.com就能把这三个域名都包含进来。注意includeSubdomains必须为true才是模糊匹配,否则是精确匹配。

结语:有啥其他问题请留言

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
状态栏的问题是什么?为什么在7.0以上的手机上运行时感觉没有沉浸式状态栏了?如何解决这个问题? 回答: 在Android 7.0以上的手机上,出现了一个问题,即无论怎么修改状态栏背景色都没有效果,看起来不再是沉浸式的状态栏。这个问题的原因是在Android 7.0之前,状态栏的实现是通过DecorView这个类来完成的,而在7.0以上,DecorView变成了一个独立的类,并且增加了一些新的属性和方法。其中一个新的属性是mSemiTransparentStatusBarColor,这个属性可能与我们要解决的问题有关。\[1\]\[2\]\[3\] 要解决这个问题,我们可以尝试修改mSemiTransparentStatusBarColor属性的值,以达到我们想要的状态栏效果。具体的实现方法可能需要根据具体的应用程序和代码来进行调整。可以通过查看相关的文档和源代码来了解如何正确地修改这个属性。 #### 引用[.reference_title] - *1* *2* [android状态栏半透明灰色,快速解决Android7.0下沉浸式状态栏变灰的问题](https://blog.csdn.net/weixin_35792040/article/details/117493339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [android状态栏半透明灰色,Android7.0沉浸式状态栏蒙灰问题完美解决](https://blog.csdn.net/weixin_34493827/article/details/117493345)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值