【问题标题】:How to get the certificate Public Key String "Convert SecKeyRef from to NSString" iOS, and if this key string similar in all platforms?如何获取证书公钥字符串“Convert SecKeyRef from to NSString”iOS,如果这个密钥字符串在所有平台上都相似?
【发布时间】:2014-04-29 19:33:39
【问题描述】:

我必须在我的 iOS 应用程序中进行证书固定,并且有 2 个选项 1-检查证书原样 2- 仅检查证书的公钥

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

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

此应用也适用于 iOS 和 Android,

我的问题是我可以从登录服务器证书中获取公钥(作为字符串)以匹配存储的公钥吗 另外那个key会和android上的那个相似吗?所以后端服务器只为我和android发送一个key?

【问题讨论】:

  • 你得到答案了吗?
  • 我也想实现同样的。你得到解决方案了吗?

标签: iphone objective-c certificate public-key pinning


【解决方案1】:

据我所知,

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

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

  2. 当用户登录时,应用程序会获得一个指向新证书的 URL。

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

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

  4. 这在 iOS 和 Android 上会一样吗?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2021-12-23
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多