在目标 C 中使用 AFNetwork 3 进行 SSL 固定?



我正在尝试使用 AFNetworking 3 库实现 SSL 固定。

我浏览了AFSecurityPolicy的文档,但没有通过使用AFSSLPinningModePublicKey获得有关SSL固定的任何信息。这是我正在使用的代码片段

AFHTTPSessionManager * manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:url]];

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
sessionManager.securityPolicy = securityPolicy;
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"my-certificate" ofType:@"cer"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
sessionManager.securityPolicy.pinnedCertificates = @[certData];

输出:

在调试模式下运行时,我可以看到从捆绑包中获取的证书,但是随后

我收到错误为:

错误

:错误域 = NSURLError域代码=-999"已取消">

调查:

  1. 验证证书链:参数不再存在 版本 3+ 在 AFNetworking .这是否意味着我将不得不 固定证书链的所有证书?

我可能错误地创建了我的证书(.cer)。你能告诉我如何从网址中提取.cer吗?

我在Mac终端中使用了以下命令

echo "Get HTTP/1.0" | openssl s_client -showcerts -connect www.xxxx.xx:443 > mycertificateinpem.pem
openssl x509 -inform PEM -in mycertificateinpem.pem -outform DER -out my-certificate.cer

我们能够解决问题。我正在制作双重安全政策实例.这就是一个实例覆盖另一个实例的原因。

请注意:AFNetwork 3.0 可用于固定中间证书。它不验证整个链。:)

相关内容

  • 没有找到相关文章

最新更新