App Store Connect API Key 被撤銷後怎麼恢復?2026 指南

App Store Connect API Key 被撤銷後怎麼恢復?2026 指南

Apple 說明,App Store Connect API 請求使用的 JWT 有效時間最長為 20 分鐘;這是權杖時效,不能據此判定 API Key 已撤銷。Apple 的 JWT 產生說明

症狀 → fastlane 授權失敗
最快解法 → 先查明錯誤類型;若 API Key 確已撤銷,就建立新密鑰並替換所有舊憑證使用點,無法重新啟用舊密鑰。

正在使用 fastlane 自動上傳 App 或管理 TestFlight 的獨立開發者,適合依本文恢復發布流程。
若您只需要初次建立密鑰,或正比較個人密鑰與團隊密鑰的選擇,本文聚焦的是故障復原與驗收。

先分辨授權錯誤:JWT 失效不等於密鑰撤銷

fastlane 出現 API Key 無效或授權失敗時,不要直接撤銷、重建密鑰。先保存錯誤訊息、執行時間與目前設定所用的 Key ID,再核對請求是否拿到正確的 Issuer ID、私鑰及角色權限。Apple 對 API Key、JWT 與 API 存取的說明可參考App Store Connect API 使用說明。

故障分支 常見線索 優先核對項目
JWT 過期或產生失敗 錯誤發生在請求授權階段,或系統時間、權杖生成流程有疑點 重新產生請求權杖;按 Apple 說明核對簽署與有效時間
API Key 已撤銷 該 Key ID 在 App Store Connect 中已撤銷 確認密鑰狀態,列出所有仍引用它的工作流程
私鑰與 Key ID 不相符 更換過其中一項設定,但另一項仍指向舊密鑰 確認 p8 檔案與 Key ID 來自同一次建立
API 權限不足 認證似乎可通過,但指定操作遭拒 核對密鑰角色是否允許該操作

fastlane 提示 API Key 無效,應先檢查什麼?
先確認執行中的 lane 實際讀取哪一份設定,而非只檢查開發者以為已更新的環境變數。比對 Key ID、適用時的 Issuer ID、p8 私鑰來源與錯誤時間;再查看錯誤屬於權杖簽署、API 授權,還是特定操作權限不足。fastlane 的App Store Connect API 設定文件說明其 API Key 整合方式。

密鑰狀態已確認:撤銷後只能替換,不能復原

Apple 的密鑰管理規則不提供將已撤銷 API Key 重新啟用的方式。舊 p8 私鑰也不能靠再次下載取回;若狀態已確認為撤銷,復原路徑就是建立新密鑰,然後更新所有依賴舊憑證的設定。Apple 的 API Key 建立與管理說明可用來核對密鑰規則與建立權限。

先盤點 fastlane lane、CI 工作流程、排程任務及遠端 Mac 上的環境變數或密鑰儲存位置。若是疑似外洩,應先撤銷舊密鑰以限制風險,再建立替代密鑰;這可能造成短暫發布中斷,因此要同步安排更新與驗證。若是計畫內輪換,則應先確認密鑰類型,再決定能否在切換期間保留新舊密鑰並行。

注意:若錯誤只在執行一段時間後出現,而 Key ID 狀態未變,應先檢查 JWT 生成與使用流程。Apple 記載 JWT 有效時間上限為 20 分鐘,不代表 API Key 本身每隔相同時間就會失效。Apple JWT 文件

密鑰類型會改變遷移順序

個人密鑰與團隊密鑰的管理方式不同,不能把其中一種的輪換步驟直接套用到另一種。Apple 文件指出,每位使用者只能有一個有效的個人 API Key,而團隊 API Key 可建立多個;應以帳號畫面與Apple 的密鑰建立規則核實目前權限及可用操作。

個人密鑰只有一個有效名額時,計畫內替換通常無法照團隊密鑰方式先建立新舊兩把密鑰並行測試;需要先規劃停用與切換窗口,並確認有權管理該密鑰的帳號能完成替換。團隊密鑰可建立多個時,若目前角色允許,可先建立替代密鑰、更新受控環境並驗證,再撤銷舊密鑰。疑似外洩時,安全處置優先於維持並行。

密鑰類型 計畫內遷移的安排 操作前核對
個人密鑰 不假設可新舊並行;安排替換時段並預留更新與驗證時間 使用者是否已有有效密鑰、帳號能否建立或管理替代密鑰
團隊密鑰 若權限與政策允許,可先建立替代項目並逐一切換使用點 建立者角色、所需操作權限、舊密鑰撤銷時機

按里程碑替換遠端 Mac 上的 fastlane 憑證

fastlane 的 app_store_connect_api_key action 支援以檔案路徑或私鑰內容等方式提供 API Key 設定;實際採用哪一種,應以專案目前的設定及fastlane action 參數文件為準。不要為了快速修復,把私鑰直接寫進程式碼、版本控制資料庫或會輸出機密的除錯日誌。

更換密鑰後,哪些自動化設定要更新?
所有實際引用舊 Key ID 或舊 p8 私鑰的設定都要盤點,包括 lane 設定、環境變數、密鑰管理工具、CI 工作流程與遠端 Mac 任務。只更新一份設定檔,但漏掉排程任務或另一個工作目錄,常會讓新密鑰看似已部署、實際執行仍讀到舊值。

建議依下列里程碑操作:

里程碑一:定位使用點。 在每個發布工作流程中找出目前讀取的 Key ID、Issuer ID(若該設定需要)及私鑰來源。確認排程工作與手動執行使用的是同一套設定。

里程碑二:建立替代密鑰。 由具備相應權限的帳號建立新密鑰,安全保存下載取得的 p8 私鑰。確認沒有把私鑰內容貼入團隊訊息、程式碼提交或命令輸出。

里程碑三:更新憑證來源。 在遠端 Mac 的密鑰儲存位置或受控環境變數中替換私鑰與識別資訊。fastlane action 若以 key_filepath 讀取檔案,就核對檔案路徑及執行帳號的讀取權限;若使用 key_content,就確認注入內容來自受保護的憑證來源,而非倉庫中的固定字串。參數用法以fastlane action 文件為準。

里程碑四:驗證執行環境。 在遠端 Mac 上確認工作目錄、lane、環境變數範圍及密鑰讀取方式與預期一致。檢查時只核對路徑、Key ID 或是否載入,不輸出私鑰本身;若同一任務有互動式與排程式執行,也要分別確認它們讀取的設定。

里程碑五:分層測試發布鏈路。 先以符合密鑰角色權限的低風險 API 操作確認授權,再執行專案實際需要的上傳任務。確認上傳是否完成後,另行查看 App Store Connect 中的處理狀態;API 認證成功、檔案交付完成與後續處理完成,是不同的驗收結果。

里程碑六:撤銷舊密鑰並記錄復原。 團隊密鑰在並行測試後,確認沒有工作流程再引用舊憑證才撤銷;若屬疑似外洩,則依安全處置要求先撤銷。記錄替換範圍、憑證交付方式及驗證結果,但不要記錄私鑰或可識別帳戶的資訊。

遠端 Mac 上如何替換 fastlane 使用的 p8 私鑰?
先找出 lane 使用的 key_filepath 或 key_content 來源,再將新 p8 私鑰安全放到該來源並更新對應設定;接著以相同執行帳號和工作目錄做低風險授權測試。若查不到執行時實際讀取的位置,先不要刪除舊設定或在日誌中列印私鑰,應先確認排程任務的環境與密鑰掛載方式。

  • [ ] 已確認舊 Key ID 的狀態,並分清 JWT 錯誤、密鑰撤銷、私鑰錯配與權限不足
  • [ ] 已盤點所有 fastlane lane、CI 工作流程、排程任務及遠端 Mac 使用點
  • [ ] 新 Key ID、適用時的 Issuer ID 與 p8 私鑰來自同一組新密鑰
  • [ ] 遠端 Mac 實際執行帳號能讀取憑證,且私鑰未進入程式碼或日誌
  • [ ] 已分別驗證 API 權限、上傳交付與 App Store Connect 後續處理狀態
  • [ ] 舊密鑰只在完成遷移後撤銷;疑似外洩情況則優先撤銷並接受短暫中斷

若需要檢查遠端環境的憑證保存與存取方式,可參考ArmVNC 隱私與資料處理說明及ArmVNC 幫助中心,並依實際使用的服務設定核對。

恢復驗收:授權成功不代表發布已完成

替換完成後,應將「API 認證通過」、「上傳任務完成」與「App Store Connect 處理完成」分開記錄。若第一項通過、上傳仍失敗,問題可能在交付步驟或工作流程;若上傳成功但處理尚未完成,也不能宣稱整條發布鏈路已恢復。這種分段驗收能避免再次把權限、憑證或後續處理問題混成同一個「API Key 無效」。

如果目前依賴個人電腦執行發布,常見限制是電腦關機或離線時排程無法運作、開發工作與打包工作爭用資源,以及憑證散落在多個本機工作環境而難以盤點。自購 Mac 可提供固定硬體,但需要自行承擔採購與維護;若只是需要一段時間的穩定 macOS 發布環境,遠端 Mac 租用可作為另一種選擇。您可先查看ArmVNC 香港 Mac 方案,再按發布頻率、憑證管理方式與預算判斷是否適合;若工作長期高負載或必須連接本地實體設備,則應先評估自有硬體是否更合適。

憑證更新後,接續完成 iOS 發佈

使用 ArmVNC 獨享 Apple Silicon 雲端 Mac,重新整理簽署環境並驗證建置流程。