![](/img/trans.png)
[英]Xamarin Studio on my Mac - No valid iPhone code signing keys found in keychain - Signing Identity: Missing private key
[英]Can't import Code-signing Public or Private keys using Keychain access (Mac OS X Mavericks)
為了構建一個iOS項目(在XCode中),我需要導入我的同事的公鑰和私鑰以獲取代碼簽名身份,但我無法這樣做,因為我在Keychain Access中收到錯誤消息“發生。無法導入項目./無法檢索此項目的內容“
詳細信息:
我從同事的電腦上拿了兩把鑰匙,把鑰匙扣作為兩個文件導出:
Roomer Inc.p12(私鑰)
Roomer Inc.pem(公鑰)
當他導出這些時,他將密碼留空(雖然我們也嘗試使用密碼“test”並得到相同的結果)。
當我雙擊Roomer Inc.p12(私鑰)時,它會在Keychain Access中打開並讓我選擇鑰匙串(默認情況下選擇“登錄”)
我點擊“添加”,然后提示我輸入鑰匙串的密碼(我留空)
接下來我總是在Keychain訪問中看到此消息:
但是,盡管出現此消息,但當我單擊“確定”時,我會看到“Roomer Inc”的新私鑰條目。 請注意,此條目是“登錄”鍵鏈中的私鑰,正如我所料,但沒有到期日期(應該嗎?)
接下來,對於Roomer Inc.pem文件(公鑰),我被要求選擇鑰匙串(“登錄”),然后點擊添加
然后,我也得到“發生錯誤。無法導入項目。/該項目的內容無法檢索”公共密鑰的消息。 但是在這種情況下(與私鑰不同),我沒有看到任何與我剛添加的內容相對應的條目。
因此,看起來私鑰條目可能或可能不正常(我無法驗證),並且如果沒有此錯誤消息,則無法在密鑰鏈中安裝Roomer的公鑰條目。 請注意,我還嘗試使用security import命令導入公鑰:
$ security import Roomer \\ Inc.pem -f pkcs12~ / Library / Keychains / login.keychain
1鍵進口。
當我這樣做時,雖然命令返回“1 key import”,但我沒有在Keychain Access窗口中看到“Roomer Inc”的公鑰(我關閉了Keychain Access並重新打開它)。
無論哪種方式,我們都發現這是我們的攔截器。 (當然,症狀是XCode項目不會為AdFoc配置文件構建,以便與TestFlight一起使用)。 我沒有關於XCode構建和TestFlight設置的其他步驟,因為我們認為核心問題與導入密鑰有關,如上所述。
我們發現了我們的問題,我在這里發布我的答案,以便其他人可能會發現它有用。
問題實際上是Keychain Access的UX問題。 讓我備份並給出一些上下文:當您使用Apple創建分發證書時,您可以基於PRIVATE KEY和基於應用程序的權限創建它。
在Keychain Access中,分發證書在其創建的私鑰名稱下面列為子級。 這里有一個問題:當您在Keychain訪問中使用搜索框時(在我的情況下,我們輸入“Roomer”,因為這是我們的分發證書上的名稱),它不會查找具有該名稱的證書,它將查找附加到該名稱的私鑰的證書。
因此,我的同事根據名為“Jorge Davila”(他的名字)的私鑰創建了分發證書,即使分發證書名為“iPhone Distribution:Roomer Inc.”
當他在Keychain Access中搜索“Roomer”時,搜索結果中沒有顯示正確的那個,因為此證書的密鑰被命名為“Jorge Davila”而不是“Roomer”。 因此,他出口了錯誤的證書並沒有意識到,因為有其他人(有些人已過期)有這個名字。
以下是正確的看法:
這是Keychain Access的用戶體驗中一個相對細微的問題,而且搜索工具沒有為您提供您期望的結果。 我發布這個答案,希望其他人可能覺得它很有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.