繁体   English   中英

如何允许用户在iOS中使用AFNetworking信任并固定自签名SSL证书

[英]How do I allow a user to trust and pin a self-signed SSL Certificate using AFNetworking in iOS

我正在研究将被企业使用的iOS应用程序。 我们的应用程序将与可能配置了由已部署我们的服务器软件的公司生成的自签名证书的服务器通信。

我们的iOS应用程序使用AFNetworking,允许SSL固定。 但我得到的印象是,这只会固定在创建时作为应用程序包的一部分包含的SSL证书。 它不允许您使用iOS设备稍后会发现的证书。

我正在寻找一种方法让客户推出(可能通过配置文件)自签名证书,以便我们的应用程序可以安全地与服务器通信。 有办法吗? 或者我是否需要跳过AFNetworking并直接使用Foundation类。

我欢迎任何评论,以帮助澄清这个问题。

更新:对于可能像我一样困惑的其他人。 虽然我理解为固定是一个重要的主题,但我把它与我的第一要务混淆:从原型应用程序中删除对无效证书的支持。 我想要的是用户明确信任自签名证书的方式。 这很简单。 只需将其作为个人资料添加到您的iOS设备即可。 但是,由于我们在开发中使用的自签名证书并不完全正确所以iOS不会信任它,我也被绊倒了。 有关如何生成“良好”的自签名证书,请参阅http://blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/ 既然我已经签署了自签名证书,我将跟进如何使用固定。

你没错, AFSecurityPolicy有一个属性pinnedCertificates ,如果你使用policyWithPinningMode: factory方法,它默认使用应用程序包中的任何证书。

要使用您自己的证书,请将此属性设置为包含每个用户证书的NSData表示形式的NSArray:

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
NSData *certificateData = [NSData dataWithContentsOfFile...
securityPolicy.pinnedCertificates = @[ certificateData ];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM