首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SSL2.0的AFNetworking锁定允许POST请求,而不考虑使用的证书文件

使用SSL2.0的AFNetworking锁定允许POST请求,而不考虑使用的证书文件
EN

Stack Overflow用户
提问于 2014-07-26 04:28:39
回答 1查看 891关注 0票数 6

我们使用DigiCert作为我们的CA。我们已经用以下命令生成了.cer文件:

代码语言:javascript
复制
openssl x509 -in WEBSITE.crt -outform der -out WEBSITE.cer 

这应该可以工作,但问题是,不仅cer可以工作,而且我们放入代码中的任何文件都可以工作。我们甚至测试了空白的.cer文件,这也是可行的。所谓工作,我的意思是,无论使用什么.cer文件,我们都能够向服务器发出post请求。显然,如果使用的不是我们签名的证书,我们希望它失败。

我们的源设置为Cloudflare,然后路由到一个安装了我们的证书的Amazon负载均衡器。

我正在使用Charles Proxy to MITM,我可以在iOS应用程序中使用证书或不使用证书。

我们使用最新版本的AFNetworking来完成SSL锁定。我继承了AFHTTPRequestOperationManager并添加了以下方法:

代码语言:javascript
复制
+ (AFSecurityPolicy*) siteSecurityPolicy
{
    /**** SSL Pinning ****/
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"WEBSITE" ofType:@"cer"];
    NSData *certData = [NSData dataWithContentsOfFile:cerPath];
    AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
    [securityPolicy setAllowInvalidCertificates:NO];
    [securityPolicy setPinnedCertificates:@[certData]];
    [securityPolicy setSSLPinningMode:AFSSLPinningModeCertificate];
   /**** SSL Pinning ****/

    return securityPolicy;
}

我写这篇文章的代码如下:

代码语言:javascript
复制
websiteRequestOperationManager *manager = [websiteRequestOperationManager manager];

/**** SSL Pinning ****/
[manager setSecurityPolicy:[websiteRequestOperationManager siteSecurityPolicy]];
/**** SSL Pinning ****/

[manager GET:WEBSITE_URL parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary* responseObject) {
    //code
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    //code
}];

我们遗漏了什么关键步骤?

我还应该提到我NSLog:

代码语言:javascript
复制
[manager.securityPolicy.pinnedCertificates count]

并收到了1。

EN

回答 1

Stack Overflow用户

发布于 2014-08-22 20:35:28

对于我来说,使用AFNetworking 2.3.1似乎也是如此。然而,在iOS 8 beta 5上,AFNetworking 2.1.0没有这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24963981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档