使用 AFNetwork 在 iOS 应用程序中续订 SSL 证书后的 NSURLErrorDomain

Posted

技术标签:

【中文标题】使用 AFNetwork 在 iOS 应用程序中续订 SSL 证书后的 NSURLErrorDomain【英文标题】:NSURLErrorDomain after SSL certificate renewal in iOS app using AFNetwork 【发布时间】:2014-09-11 11:20:19 【问题描述】:

我们有一个使用 HTTPS 访问 API 的旧 ios 应用。该应用程序运行良好,直到几天前。有问题的 SSL 证书在几天前过期。该应用程序开始出现以下错误:

Error Domain=NSURLErrorDomain Code=-1202 "此服务器的证书无效。您可能正在连接到伪装成“xxx.xxx.com”的服务器,这可能会使您的机密信息面临风险。"

因此我们更新并重新加密了 SSL 证书。现在,当我从浏览器(chrome)访问 HTTPS url 时,它可以正常工作并在 url 之前的左侧显示绿色锁。当我单击锁定图标时,它会显示有效的证书信息。但是,当从应用程序访问相同的 URL 时,我仍然会收到相同的错误。

使用的 AFNetworking 是 2011 年的,因为这是一个旧应用程序。由于该应用程序已经在 AppStore 上,我正在寻找服务器端修复程序。

你以前见过这样的事情吗?如果是,你是怎么解决的?

问候,

普里坦。

【问题讨论】:

【参考方案1】:

是的,我以前见过这样的事情,好消息是它是服务器端修复。浏览器经常缓存第三方证书,因此会忽略证书链的小问题,这似乎是您的问题。但是,您的应用程序代码不信任您的网站提供的证书链。

下载一个名为 SSL detective 的应用程序,并使用它来查询您的网站以获取证书链。您可能会看到其中一个部分是红色/不受信任的,您应该设法确保整个链是受信任的。您可能需要对服务器端证书设置进行一些更改。

【讨论】:

另一个有用的工具是 www.ssldecoder.org。但是,还应该注意的是,如果您重新设置了证书的密钥,那么您的公钥可能会更改,因此如果您使用公钥固定,您可能需要将您的证书重新附加到您的应用程序包中。换句话说,如果您的服务器端看起来不错但问题仍然存在,那么应用更新可能是不可避免的。

以上是关于使用 AFNetwork 在 iOS 应用程序中续订 SSL 证书后的 NSURLErrorDomain的主要内容,如果未能解决你的问题,请参考以下文章

AFNetwork 作用和用法详解

Objective-C 如何使用 AFNetwork 上传字符串

AFNetwork、Magical Record和块内保存

Swift 的 AFNetwork [关闭]

如何使用 AFNetwork 的 AFHTTPRequestOperationManager 设置 HTTP 请求正文?

我是不是需要将 Alamofire 请求打包成 AFNetwork 之类的东西?