如何在 iOS 应用程序中执行 SSL 固定

已发表: 2020-02-24

人们一走出家门,就开始寻求开放的Wi-Fi网络。 无论他们是在机场等候还是坐在咖啡馆里,首要任务是找到一个开放的Wi-Fi连接。

可怕的是,黑客们也在追求同样的目标。 他们也等待用户在开放网络上发起连接请求,然后才将他们的网络钓鱼大脑投入工作并剥夺他们的敏感数据或更糟糕的是,他们银行账户中的钱。

虽然 HTTPS 在某种程度上是有效的,但它是一种 SSL 协议,众所周知,它通过牢不可破和高度安全而使用户安全。 但是中间人 (MITM) 攻击找到了突破这一点方法。

这就是 SSL Pinning技术作为移动应用安全最佳实践之一出现的地方 专门谈论平台,它是理想的 iphone 应用程序安全解决方案,可以出色地解决问题。

在本文中,我们将研究在 iOS 应用程序中加入 SSL Pinning 以防止这些中间人攻击类型和过程。 是OWASP 移动安全测试实践的一个活跃部分的过程

SSL 证书固定方法的类型

SSL Pinning 测试主要有两种方法,如下所述:

SSL 固定

SSL-certificate

  • 固定证书 – 您可以下载服务器的证书并将它们捆绑在应用程序中。 在运行时,应用程序会将服务器证书与您嵌入的证书进行比较。
  • 固定公钥 - 您可以在代码中检索证书的公钥作为字符串。 在运行时,应用程序将证书的公钥与代码中硬编码的公钥进行比较。

在两种 SSL 固定iOS方法之间进行选择取决于您的服务器配置和个人需求。 当您选择第一个选项时,您必须在服务器更改其证书时上传应用程序,否则它将停止工作。 选择第二个选项时,您可能会违反密钥轮换策略,因为公钥不会更改。

现在让我们看一下在您的 iOS 应用程序中实施 SSL Pinning 的步骤。

*注意:下面提到的步骤遵循使用 Swift 固定 iOS 证书的过程。

如何在你的 iOS 应用中实现 SSL Pinning

1. NSURLSession

对于 NSURLSession,处理 SSL pinning 的主要方法是 URLSession:didReceiveChallenge:completionHandler:delegate。 开发人员必须设置类以符合 URLSessionDelegate 并将此函数粘贴到类中:

该函数将“向委托人请求凭据,以响应来自远程服务器的身份验证请求”。 然后, iPhone 应用程序开发人员会将来自服务器的证书与保存在应用程序包中的证书进行比较。 如果发现两个证书相同,则身份验证将使其通过,客户端将能够连接到服务器。

2. Alamofire 证书固定

Alamofire是 Swift 语言中最著名的 HTTP 网络库之一。 它带有 iOS Swift 中用于 SSL pinning 的内置功能,并且非常易于使用。 这是使用 Alamofire 证书固定制作安全 iOS 应用程序的方法。

与 SSL Pinning 实施相关的常见问题以及如何解决这些问题

知名应用程序开发机构质量保证专家会定期测试移动应用程序的安全漏洞,包括完整的网络渗透。 但是有很多应用测试机构并没有以同样的热情专注于这些领域。 在他们的应用程序中实施这种特定的iPhone 安全解决方案时,他们似乎不太情愿

以下是这背后的一些普遍原因——

  • iOS应用程序中 SSL 固定最大缺点之一是它的实现。 这个过程很复杂,它会迫使开发人员一次又一次地编写代码,并使应用程序的构建过程复杂化
  • 固定会定期更改的 iOS SSL 证书可能会迫使开发人员在每次证书更改时更新应用程序二进制文件。
  • 必须采取多种措施来保护绕过 iOS SSL 验证的方法。

注意到舞台缺席可能带来的影响,以下是可靠的 iPhone 应用程序开发公司如何避免一些常见的陷阱

测试引脚

与测试是否一切正常的常规应用程序测试不同,SSL pinning 测试的方法是您必须检查是否有故障。 您将不得不专注于测试应用程序是否取消了可能受损的连接。 如果应用程序启用与单个端点的通信,则测试将像将 GET 请求设置为任意状态一样简单 理想情况下,在这种情况下,应用程序必须取消连接并且请求应该失败。

办理证件变更

更新域证书会保留公钥/私钥对,但情况并非总是如此。 但是,如果您正确规划更新周期,您将能够避免最终用户的停机时间。

iOS SSL 证书在网站上激活之前,除了当前激活的证书之外,您必须将其固定在应用程序中,然后发布更新。 当我们在 Appinventiv 执行此步骤以制作安全iOS 应用程序时,我们会临时使用新证书执行快速测试,并在两个证书都固定的情况下测试应用程序。

关于 iOS 应用程序中 SSL 固定的常见问题解答

1. iOS 应用中的敏感数据存储在哪里?

应用程序的敏感数据应始终存储在 iCloud 或 iOS 中的 Keychain 中,甚至在适当加密后存储在数据库中。

2. SSL 是如何工作的?

SSL Pinning 是最常见的iOS 应用安全提示之一 但是为了理解它的含义,您首先必须知道 SSL 是如何工作的。

  • 浏览器尝试连接受 SSL 保护的网站。 浏览器然后请求网络服务器识别自己。
  • 然后,Web 服务器向浏览器发送其 SSL 证书副本。
  • 浏览器检查是否必须信任 SSL 证书。 如果可以,则向 Web 服务器发送一条消息。
  • 然后,Web 服务器发回确认以开始 SSL 加密会话。
  • 然后最终在浏览器和 Web 服务器之间共享加密数据。

结束的想法

尽管 SSL pinning 被认为是安全的,并且在需要加密时被广泛使用,但在构建高风险应用程序时总是欢迎使用另一层保护。 SSL pinning 允许您在 SSL 信任验证链之上验证服务器的身份。

使用 SSL 固定,您可以拒绝所有连接,除了与我们已将其 SSL 证书保存到本地捆绑包中的指定服务器的连接。 这样做的一个潜在缺点是,无论何时更改服务器的 SSL 密钥,您都需要更新应用程序。

如果您还计划使用 SSL pinning 启动 iOS 应用程序最好咨询最好的 iOS 应用程序开发公司