iOS适配https(一) -- AFNetworking

前言

根据苹果要求,2017必须要适配https。服务器端配置https需要一堆东西,这里就不详述了,主要介绍客户端的问题,而且是最简单的配置方式。

有的没有配置证书只是简单设置了网络请求的security也成功了,这里介绍的方式是配置证书的,更安全更有保障度。

这里先介绍AFNetworking的基本配置以及相关证书。

一、配置证书

1、服务器端证书配置好后可以给客户端一个证书,后缀是.crt的,拿到手后转成.der或.cer格式

  • .crt转.der方法 >

    openssl x509 -in Users/Jeffrey/ca.crt -out /Users/Jeffrey/ca.der -outform DER

  • .crt转.cer方法

    openssl x509 -in /Users/Jeffrey/ca.crt -out /Users/Jeffrey/ca.cer -outform DER

这个方法没有测试成功,因为我们后台人员没有给我有效的证书。这个方法如果报错的话需要做相关验证。参考:https双向认证iOS客户端处理

2、直接终端生成对应的cer证书
这个方式会跳过服务器端给的证书一步,因为很多时候你们都不清楚到底要哪个证书,也不知道哪里会出现错误。

直接看命令:

openssl s_client -connect www.baidu.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > https.cer

百度的域名换成自己公司的,注意不要加http或https。如果贵公司的域名的https还没有配置好,那么这步也会是无效的,会报错。

Expecting: TRUSTED CERTIFICATE

这个方法亲测有效!

二、证书导入

直接拖进去,记住这步。否则会没有读取到证书文件。


tip.png

三、AFNetworking单向验证设置

由于网络库没有更新,所以这里使用的还是AFNetworking 2.6.0的相关配置,其实最近的也是一致的,配置的都是AFSecurityPolicy,是一致的。

+ (AFSecurityPolicy*)customSecurityPolicy
{
    // 先导入证书 -- 这里要判断环境
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"server_staging" ofType:@"cer"];//证书的路径
    NSData *certData = [NSData dataWithContentsOfFile:cerPath];
    
    // AFSSLPinningModeCertificate 使用证书验证模式
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
    
    // allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
    // 如果是需要验证自建证书,需要设置为YES
    securityPolicy.allowInvalidCertificates = YES;
    
    //validatesDomainName 是否需要验证域名,默认为YES;
    //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。
    //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。
    //如置为NO,建议自己添加对应域名的校验逻辑。
    securityPolicy.validatesDomainName = NO;

    if (!certData) {
        return securityPolicy;
    }
    securityPolicy.pinnedCertificates = @[certData];
    
    return securityPolicy;
}

这里建议统一设置,否则每次请求再单独添加会比较繁琐。

_requestManager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[KYConfig defaultConfig].serverHostURL];
        NSMutableSet *contentTypes = [_requestManager.responseSerializer.acceptableContentTypes mutableCopy];
        [contentTypes addObject:@"application/json"];
        _requestManager.responseSerializer.acceptableContentTypes = [contentTypes copy];
        _requestManager.securityPolicy = [KYHTTPManager customSecurityPolicy];        

关于webView以及SDWebImage等后续篇章会继续介绍,敬请关注。

下一篇:

iOS适配https(二)-- 黑魔法简单适配SDWebImage

相关参考:

https双向认证iOS客户端处理
iOS 迁移到HTTPS(自建证书+单向验证+AF3.0+WKWebView+SDWebImage)

如果需要Demo请留言,会在后续版本中添加。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • HTTPS介绍 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩...
    齐滇大圣阅读 8,784评论 8 96
  • 适配https 说明: 苹果声明从2017-01-01开始,所有提交的应用必须使用更安全的https协议。 因此,...
    倔犟的贝壳阅读 1,360评论 0 2
  • 本文来自 http://www.2cto.com/kf/201611/570823.html 苹果官方在2017...
    生活本无度阅读 6,201评论 1 5
  • 七点便出门了,戴上耳机,在湖边慢跑。今天换了一个风格,没有听往常跑步必听的快节奏,换成了京剧。跑步听京剧,我这也算...
    落微阅读 395评论 6 2
  • 这几年,很少参加文学研讨会,总是怕听到专家的发言:读书的人少了,文学死了。在这个冬天,我收到山东桓台作家徐艳寄来的...
    朱晓剑阅读 873评论 0 1