我正在尝试通过 SSL 连接到我的网站,该网站使用 StartSSL 签名的证书。当我浏览网站时,一切正常,但是,当我尝试在应用程序中使用 SSL 时,我得到:
Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed. (NSURLErrorDomain error -1012.)" UserInfo=0x8d635f0 {NSErrorFailingURLKey=https://edutoets.nl/API/login.php, NSErrorFailingURLStringKey=https://edutoets.nl/API/login.php}
我已将 .cer 格式的证书(使用 openssl 将其从 .crt 转换为 .cer 后)包含在应用程序包中,AFNetworking 可以找到它。这是我创建管理器安全策略的代码:
- (AFSecurityPolicy*) sslSecurityPolicy
{
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"edutoets" ofType:@"cer"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
[securityPolicy setAllowInvalidCertificates:NO];
[securityPolicy setPinnedCertificates:@[certData]];
[securityPolicy setSSLPinningMode:AFSSLPinningModeCertificate];
return securityPolicy;
}
在这里我设置安全策略并执行请求:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager;
[manager setSecurityPolicy:[self dodyrwSecurityPolicy]];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST:kLoginURL parameters:... success:...];
我不知道我在这里做错了什么。 .cer 文件看起来不错(该证书与浏览网站时的证书相对应)。这是在 iOS 模拟器上发生的。
有人能帮我解决这个问题吗?
我也遇到过类似的情况,尽管我的应用程序中嵌入了有效的 SSL 证书,但我还是收到了错误 1012。使用 AFNetworking v1 时,该应用程序可以与服务器通信(其他一切保持不变)。我的问题是由于应用程序中没有嵌入整个证书链引起的。环境validatesCertificateChain = NO;
解决了这个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)