今天打包新版本上傳到AppStore時報錯 ERROR ITMS-90034:"Missing or invalid signature.The bundle'com.xxx.xxx' at bundle path 'Payload/xxx' is not signed using an Apple submission certificate."

這個錯誤是由證書錯誤導致的,解決這個問題可以按以下步驟依次查找
1.檢驗發布證書是否有效,打開鑰匙串,找到發布證書,發布證書名字中有Distribution的文件,如果在下圖中紅框標識出的地方顯示此證書的“簽發者無效”

2.如果發布證書是在本機生成的(生成發布證書時上傳的.certSigningRequest文件是在本機生成的),請看步驟4,如果發布證書不是在本機生成的請看步驟3
3.檢驗私鑰安裝是否成功,私鑰如果安裝成功,在鑰匙串中查看時,我的證書和密鑰中的文件都是可以展開的,兩邊展開后的文件是對應的,如下圖所示


沒有安裝私鑰時的效果如下,紅框處沒有可展開的標識

此時我們需要從最開始生成發布證書的那台電腦上導出一個后綴為.p12的文件
導出方法如下
在生成發布證書的電腦上找到已經安裝好的有對應密鑰且有效的發布證書,右鍵->導出“iPhone Distribution”

輸入名字以便以后區分,選擇保存路徑

輸入密碼保證別人不會盜用

這樣就導出了一個p12文件,拷貝到自己電腦雙擊安裝即可

當這台電腦安裝了p12文件后,其他電腦如果需要使用這個發布證書,也能夠使用從這台電腦導出的p12文件(我沒測試)
如果到這里,發布證書任然提示“此證書的簽發者無效”,請看步驟4
4.檢查根證書是否過期
注意:鑰匙串會默認將過期的證書隱藏,所以檢查時先設置“顯示已過期的證書”

在鑰匙串中找到已過期的根證書,並刪掉,根證書可能放在好幾個地方,所以最好把下圖中紅框標識的位置的查看到,這個過期的根證書必須刪掉,就算你有一個有效的根證書也不行,只要你過期根證書沒刪干凈就會報錯

