2016-11-15 42 views
1

我正在研究一個快速需要包含https以進行網絡通信的應用程序。當我們注意到我們通過URL發送了我們的所有用戶憑據時,我們對此的擔憂就出現了。這不好,因爲那時我們的用戶名和密碼就在外面。經過大量研究後,似乎需要固定服務器SSL證書的公鑰才行。我已決定使用TrustKit來固定證書的公鑰,因此我們不必在應用程序中固定整個證書。這樣我們就不必一直更換證書,因爲它不必建立新的IPA或提交給Apple。爲了解決這個問題,我需要回答幾個問題。設置TrustKit

所以我明白我需要開始使用TrustKit三件主要的事情。

我需要知道,我們在我們的info.plist將要使用的,包括他們。

  • 問題:請問在這個域的服務器需要做的,以任何準備讓TrustKit它所需要處理一切?

2.我需要2個公鑰哈希也需要被包含在info.plist中。

  • 問題:我如何從證書的公鑰哈希?我從哪裏得到這些散列?

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

  • 問題:這是什麼?我如何找出使用哪一個?

一旦所有這一切都在地方,還有什麼我需要做appwise才能夠確保TrustKit它的工作長期?

回答

0
  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來自動檢測證書的算法。