【问题标题】:Connect iOS app with Apache Server using SSL certificate?使用 SSL 证书将 iOS 应用程序与 Apache 服务器连接?
【发布时间】:2013-11-25 15:45:54
【问题描述】:

我使用的是 AFNetworking 2.0,并且我在 Apache 服务器上启用了证书身份验证。 我在 xcode 项目中放置了一个 .crt 文件。 每当我尝试建立与服务器的 https 连接时,我都会收到以下错误:

The operation couldn't be completed. (NSURLErrorDomain error -1012.)

这是调用服务器的代码:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager setSecurityPolicy:[AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]];
[manager POST:@"https://www.example.com/" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    //success
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    //failure
}];

【问题讨论】:

  • 什么证书?
  • 这是一个自签名的 SSL 证书
  • 那是你的问题。 iOS 对证书认证非常挑剔。您需要来自 CA 的完全合法的证书(您可以免费试用)。
  • 您可以在 StartSSL.com 获得完全免费的。通常,只要您正确安装了证书服务器端,您甚至不需要 Xcode 项目中的 crt 文件。

标签: ios apache ssl afnetworking-2


【解决方案1】:

默认情况下,AFNetworking 仅针对 .cer 文件进行锁定。

将您的证书重命名为.cer 而不是.crt,它应该可以工作。

您可以通过查看固定的证书来查看它是否正常工作:

NSLog(@"Using %d pinned certificates", [manager.securityPolicy.pinnedCertificates count]);

【讨论】:

    猜你喜欢
    • 2010-09-08
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2017-12-22
    • 2019-02-14
    • 2016-08-16
    • 1970-01-01
    • 2013-12-27
    相关资源
    最近更新 更多