我正在开发一个快速需要包含https
进行网络通信的应用程序。当我们注意到我们通过URL
发送所有用户凭据时,我们对此产生了担忧。这不好,因为我们的用户名和密码在那里是公开的。经过大量研究后,似乎固定服务器SSL证书的公钥是可行的方法。我决定使用TrustKit
来固定证书的公钥,这样我们就不必将整个证书固定在应用程序中。这样我们就不必在超时时间内更换证书,因此无需建立新的IPA或提交给Apple。为了使其正常运行,我需要回答几个问题。
所以我理解开始使用TrustKit
时需要做三件事。
1。我需要知道我们将要使用的域,并将它们包含在我们的info.plist中。
TrustKit
?2. 我需要2个公钥哈希,还需要包含在info.plist中。
3。我需要知道要使用的公钥算法。
一旦完成所有这些,我还需要做任何其他事情以确保TrustKit
长期工作吗?
答案 0 :(得分: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/。
2.中描述的脚本也会返回算法。它是嵌入在服务器证书中的公钥的算法(RSA,ECDSA)。 TrustKit需要这样做,因为iOS不提供API来自动检测证书的算法。
答案 1 :(得分:2)
要从证书中获取算法和哈希(以及更多信息),请使用