TL; DR版本:有沒有辦法通過一個服務器證書到iOS客戶端不還包括沿着服務器的私有密鑰傳遞?iOS版 - 如何獲得服務器證書成的iOS客戶端鑰匙串釘扎
我寫了我的MacOS的服務器應用程序進行通信的的iOS客戶端應用程序(所以我必須在兩端的控制)。我已使用自簽名證書實施了證書鎖定,以使事情更安全。爲了在開發過程中實現這一點,我將服務器證書硬編碼到iOS客戶端應用程序中,並告訴客戶端只連接到在TLS握手期間爲您提供確切證書的服務器。一切都很好。
然而在現實世界中我賣這個系統爲一組(1個服務器,多個客戶端對每個客戶的),所以我不能硬編碼服務器證書插入iOS客戶端。我的計劃是代替交付服務器證書帶外(通過電子郵件)與iOS的客戶喜歡這裏提到的:Making Certificates and Keys Available To Your App:
應用程序只能訪問自己的鑰匙串訪問組鑰匙串項目。
要在您自己的應用程序中使用數字身份,您需要編寫代碼來導入它們。這通常意味着讀取PKCS#12格式的blob,然後使用函數將blob的內容導入到應用程序的鑰匙串中。使用函數
SecPKCS12Import
提供身份的一種方法是通過電子郵件。在供應設備時,請向關聯用戶發送電子郵件,並將其客戶端標識作爲PKCS#12文件附加。
我的問題是,的.p12文件包含證書和服務器的私有密鑰 - 這似乎是非常錯誤的通過私有密鑰一起爲好。
是否有任何其他的方式來傳遞的服務器證書的IOS客戶端,並不涉及也沿着服務器的私有密鑰傳遞?
謝謝!