App适配https请求

iOS进行https请求时,比http请求多了一项ssl加密功能,在数据传输层对数据进行加密传输,保证数据的安全。
ssl加密需要证书验证;证书 是ca机构颁发的话,不需要多余的代码,请求以前http的时候怎么写现在还怎么写,只是把请求url的http改成https;但是如果站点的证书是自签证书(如通过java keytool自生成),ios默认是验证不通过的,请求会失败,就需要在http请求做对应的处理。

比如使用AFNetworking进行网络请求,就需要将自签名证书配置进去,代码示例如下:
// /先导入证书
NSString *cerPath = [[NSBundle mainBundle] pathForResource: @"xxx" ofType: @"cer" ]; //证书的路径
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
// AFSSLPinningModeCertificate 使用证书验证模式
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
// allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
// 如果是需要验证自建证书,需要设置为YES
securityPolicy.allowInvalidCertificates = YES;
securityPolicy.validatesDomainName = NO;
securityPolicy.pinnedCertificates = @[certData];


代码层配置完成后,需配置app的info.plist;如图


需要配置app transport security settings;其中有三项配置,分别为:
Allows Arbitrary Loads 默认值为NO,表示禁止非https请求;也就是为NO时,只允许https请求;设置为YES时,允许任何请求;
Allows Arbitrary Loads In Web Content 默认值为NO;该属性表示web界面是否可以任意加载,为NO时只允许加载https请求,为YES时,允许加载任意请求;
Exception Domains 该属性作用是添加站点,对该站点进行设置;该站点是否必须是https请求,该站点的子节点是否需要https请求;可以设置如下属性:
NSIncludesSubdomains(包含所有的子站点);
NSExceptionAllowsInsecureHTTPLoads(允许加载http请求);
NSExceptionMinimumTLSVersion(需要TLS最低版本);
NSExceptionRequiresForwardSecrecy;
NSRequiresCertificateTransparency;


通过自己app的验证,自签名证书,Xcode8.2.1,iOS10.2;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值