如何获取证书公钥字符串"将SecKeyRef转换为NSString"iOS,如果此键字串在所有平台上相似?

use*_*492 5 iphone certificate objective-c pinning public-key

我必须在我的iOS应用程序中进行证书固定,并使有2个选项1-检查证书,因为它只检查证书的公钥

在我的情况下,我的应用程序一直连接到后端服务器,当用户尝试登录应用程序时应登录另一台服务器以解决某些安全问题,此服务器也可能根据用户类型进行更改

所以我的后端服务器向我发送了一些带有服务器证书公钥字符串的URL用于每个登录URL服务器,我必须在用户登录时检查密钥的相似性

此应用程序也适用于iOS和Android,

我的问题是,我可以从登录服务器证书获取公钥(作为字符串)以匹配存储的那个也是那个键将类似于android上的那个?所以后端服务器只为我发送一个密钥还有android?

小智 0

我认为,

  1. 您的APP中存储有一个证书。

    您可以将公钥存储在钥匙串中并使用它。使用“SecItemAdd”将证书添加到您的应用程序钥匙串。存储后,您应该能够使用“SecItemCopyMatching”方法复制公钥。

  2. 当用户登录时,应用程序会获取新证书的 URL。

  3. 如果证书不同,则需要下载并使用新证书。

    对于第 2 点和第 3 点,无论哪种方式,我们都需要下载关键数据。所以,每次都下载证书,检索公钥。我们无法进行字符串比较,但是应该可以进行字节比较来检查是否相等。如果不相等,请使用“SecItemUpdate”将证书替换为下载的证书。

  4. iOS 和 Android 上的情况相同吗?

    我希望证书用于安全传输/PKI。因此,相同的公钥适用于 iOS 和 Android。