设置TrustKit

时间:2016-11-15 20:05:28

标签: ios ssl public-key pinning

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

所以我理解开始使用TrustKit时需要做三件事。

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

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

2. 我需要2个公钥哈希,还需要包含在info.plist中。

  • 问题:如何从证书中提取公钥哈希值?我从哪里得到这些哈希?

3。我需要知道要使用的公钥算法

  • 问题:这是什么?我如何找出使用哪一个?

一旦完成所有这些,我还需要做任何其他事情以确保TrustKit长期工作吗?

2 个答案:

答案 0 :(得分:2)

  1. 服务器本身不需要做任何特殊的事情,但您的运营/基础设施团队会这样做;见2.和备用引脚。

  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/

  3. 2.中描述的脚本也会返回算法。它是嵌入在服务器证书中的公钥的算法(RSA,ECDSA)。 TrustKit需要这样做,因为iOS不提供API来自动检测证书的算法。

答案 1 :(得分:2)

要从证书中获取算法和哈希(以及更多信息),请使用

https://www.ssllabs.com/ssltest/