ron*_*STI 6 ssl cocoa-touch ios afnetworking ios7
我们使用DigiCert作为我们的CA. 我们使用以下命令制作了.cer文件:
openssl x509 -in WEBSITE.crt -outform der -out WEBSITE.cer
Run Code Online (Sandbox Code Playgroud)
哪个应该可以工作,但问题是这个cer不仅可以工作,而且我们放入代码的任何文件都可以工作.我们甚至测试了空白.cer文件,这也是有效的.通过工作,我的意思是我们能够向服务器发出一个post请求,无论使用什么.cer文件.显然,如果使用除签名证书之外的其他内容,我们希望它失败.
我们的起源设置在Cloudflare,然后路由到安装了我们证书的Amazon负载均衡器.
我自己使用Charles Proxy来MITM,我可以在iOS应用程序中使用或不使用证书.
我们正在使用最新版本AFNetworking来执行SSL固定.我继承AFHTTPRequestOperationManager并添加了以下方法:
+ (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;
}
Run Code Online (Sandbox Code Playgroud)
我发布的代码如下:
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
}];
Run Code Online (Sandbox Code Playgroud)
我们错过了什么关键步骤?
我还要提一下我的NSLog:
[manager.securityPolicy.pinnedCertificates count]
Run Code Online (Sandbox Code Playgroud)
并收到1.
| 归档时间: |
|
| 查看次数: |
797 次 |
| 最近记录: |