我正在开发一个需要快速包含https进行网络通信的应用程序。当我们注意到我们通过URL发送所有用户凭据时,我们对此表示关注。这不好,因为那样我们的用户名和密码就公开了。经过大量研究,看来固定服务器SSL证书的公钥是可行的方法。我已决定使用TrustKit固定证书的公钥,因此我们不必将整个证书固定在应用程序中。这样,我们不必在证书过期后继续更换证书,因此不必建立新的IPA或提交给Apple。为了使它运行起来,我需要回答几个问题。

因此,我了解TrustKit入门需要做三件事。

1. 我需要知道我们将要使用的并将它们包括在我们的info.plist中。

  • 问题:此域中的服务器是否需要做任何准备才能获得TrustKit所需的一切内容?

  • 2. 我需要2个公钥哈希,它们也需要包含在info.plist中。
  • 问题:如何从证书中提取公钥哈希?我从哪里获得这些哈希?

  • 3. 我需要知道使用哪种 public 密钥算法
  • 问题:这是什么?以及如何找出要使用的那个?


  • 一旦所有这些都到位,我还需要做一些其他事情以确保TrustKit可以长期工作吗?

    最佳答案

  • 服务器本身不需要做任何特别的事情,但是您的操作/基础架构团队可以做;请参阅2.和备用针脚。
  • TrustKit提供了一个Python脚本来生成您要查找的哈希和算法:https://github.com/datatheorem/TrustKit/blob/master/get_pin_from_certificate.py。您需要在域的CA证书上使用脚本(这将是第一个哈希),然后在另一个CA证书上使用脚本,您从该证书购买了域的备份证书。如果您需要在服务器上快速旋转(第一个)证书而又不影响应用程序,则需要此后备销钉。这在这里更详细地解释:https://noncombatant.org/2015/05/01/about-http-public-key-pinning/
  • 2.中描述的脚本也返回算法。嵌入在服务器证书中的是公用密钥的算法(RSA,ECDSA)。 TrustKit需要此功能,因为iOS不提供用于自动检测证书算法的API。
  • 关于ios - 设置TrustKit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40618715/

    10-09 01:39