Iphone 如何获取证书公钥字符串“;将SecKeyRef从转换为NSString“;iOS,如果该密钥字符串在所有平台中都相似?

Iphone 如何获取证书公钥字符串“;将SecKeyRef从转换为NSString“;iOS,如果该密钥字符串在所有平台中都相似?,iphone,objective-c,certificate,public-key,pinning,Iphone,Objective C,Certificate,Public Key,Pinning,我必须在我的iOS应用程序中进行证书固定,要做到这一点,有两个选项 1-按原样检查证书 2-仅检查证书的公钥 在我的情况下,我的应用程序始终连接到后端服务器,当用户尝试登录时,由于某些安全问题,应用程序应该登录到另一台服务器,并且此服务器可能会根据用户类型进行更改 因此,我的后端服务器为每个登录url服务器发送一些带有服务器证书公钥字符串的url,我必须在用户登录时检查密钥的相似性 这个应用程序也是为iOS和Android开发的 我的问题是,我可以从登录服务器证书中获取公钥(作为字符串)以匹配存

我必须在我的iOS应用程序中进行证书固定,要做到这一点,有两个选项 1-按原样检查证书 2-仅检查证书的公钥

在我的情况下,我的应用程序始终连接到后端服务器,当用户尝试登录时,由于某些安全问题,应用程序应该登录到另一台服务器,并且此服务器可能会根据用户类型进行更改

因此,我的后端服务器为每个登录url服务器发送一些带有服务器证书公钥字符串的url,我必须在用户登录时检查密钥的相似性

这个应用程序也是为iOS和Android开发的

我的问题是,我可以从登录服务器证书中获取公钥(作为字符串)以匹配存储的公钥吗 另外,该密钥与android?上的密钥类似,因此后端服务器只为我和android?发送一个密钥。

据我所知

  • 您的应用程序中存储了一个证书

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

  • 当用户登录时,应用程序将获得指向新证书的URL

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

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

  • 这在iOS和Android上是一样的吗

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


  • 你得到答案了吗?我也想实现同样的目标。你找到解决办法了吗?