SSL-NetworkSecurityConfig证书配置解析

SecurityConfig证书配置 NetworkSecurityConfig

SecurityConfig

此API是24版本的新特性,面向之前的版本并不适用,请适用自验证方式进行自定义验证

添加application安全配置文件


配置network_security_config.xml

             标签和继承关系

        
       
              
      
     
     
      
      

匹配策略及标签解析

先进行域名匹配,匹配到domain-config(domain-config必须包含至少一个domain标签),则执行相关的trust-anchors和pin-set策略(覆盖上层策略),如果没有找到trust-anchors等策略就向上一级找,找到终止,使用找到的trust-anchors策略。 查找策略,内部的domain-config => domain-config => base-config => platform默认方式 (target sdk > 23 system; 23 or lower: system or user).
如果域名没有匹配到domain-config那么使用上一级策略。


是按照 domain 元素的定义连接到特定目的地的配置。 仅对domain元素匹配到的域名生效。如果目的地不在 domain-config 涵盖范围内的所有连接所使用的默认配置。
如果未在特定条目中设置值,将使用通用条目中的值。例如,未在 domain-config 中设置的值将从父级 domain-config(如果已嵌套)或者 base-config(如果未嵌套)中获取。未在 base-config 中设置的值将使用平台默认值。如果找到执行相关trust-anchors和pin-set策略。

includeSubdomains
example.com
如果为 "true",此域规则将与域及所有子域(包括子域的子域)匹配。否则,该规则仅适用于精确匹配项。

expiration="2018-01-01"

设置pin策略失效时间,失效后将不再进行该pin策略的检查。
这有助于防止尚未更新的应用出现连接性问题。不过,设置固定的到期时间可能会绕过证书固定。
设置的日期一定要保证这个时间之前证书CA和公钥不会发生变化,如果发生变化那么将认证失败。
假如设置的日期早于CA有效期,那么这个日期之后pin策略将失效。

digest="SHA-256"

7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=

PEM Base64编码,使用如下命令获取Base64加密的Sha256的公钥,可以用server本身证书或中间CA或根CA,一个验证通过即可
openssl x509 -in GeoTrust_G3.cer -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

overridePins=["true" | "false"]


针对certificates标签生效,指定此来源的 CA 是否绕过证书固定。如果为 "true",则不对此来源的 CA 签署的证书链执行证书固定。这对于调试 CA 或测试对应用的安全流量进行中间人攻击 (MiTM) 非常有用。
默认值为 "false",除非在 debug-overrides 元素中另外指定(在这种情况下,默认值为 "true")

cleartextTrafficPermitted="false"

例如,应用可能需要确保与 secure.example.com 的所有连接始终通过 HTTPS 完成,以防止来自恶意网络的敏感流量。
res/xml/network_security_config.xml:



    
        secure.example.com
    

更多请参考Google专业测试用例,详细可参考如下APK:
frameworks/base/tests/ NetworkSecurityConfigTest测试APK

你可能感兴趣的:(SSL-NetworkSecurityConfig证书配置解析)