Xcode Komut / usr / bin / kod işareti, çıkış kodu 1 ile başarısız oldu: errSecInternalComponent


105

Cihazdaki bir uygulamayı test etmek için Xcode'uma yeni ön hazırlık profili eklemeye çalışıyorum. İşte izlediğim adımlar:

  1. Tüm sertifikalar ve ön hazırlık profilleri silindi

  2. IOS Geliştirme Sertifikası Oluşturma / Ekleme

  3. IOS Cihazımı Çevrimiçi Olarak Ekle

  4. IOS Temel Hazırlık Profili Oluşturun

  5. IOS Temel Hazırlık Profili Ekle

  6. Temiz Uygulama

  7. Oluştur Sonra Uygulamayı Çalıştır

  8. Derleme Ayarlarında Kod İşaretleme ve Sağlama Profilini Ayarlama

  9. Başarıya ulaşmadan çok sayıda Google

İşte aldığım hata:

CSSM_SignData returned: 800108E6
/Users/alexpelletier/Library/Developer/Xcode/DerivedData/MyExpense-efnqzvoqwngzcmazaotyalepiice/Build/Products/Debug-iphoneos/MyExpense.app:     errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1

1
Hata, ön hazırlık profili kurulumundaki ve sertifikalar ile paket kimliğindeki uyumsuzluktan kaynaklanır. PP'nizin, paket kimliğinizin ve sertifikalarınızın itunes connect ve uygulamada doğru ayarlandığından ve doğru şekilde atandığından emin olun.
Alex Pelletier

1
Benim oluşturduğum çerçevelerin kod imzalaması sırasında Xcode 11.2.1'den 11.3'e giden bu sorunla karşılaştım. Hiçbir ön hazırlık profili dahil edilmedi. Mohit Man'ın cevabı bunu açıklığa kavuşturdu.
Daniel Zhang

Bu, SSH kullanıyorsanız ve kod işaretinin Anahtar Zincirindeki özel anahtara erişmesine izin verilmiyorsa gerçekleşir. Bunu kontrol etmek için, Anahtar Zinciri'nde anahtarı bulun, sağ tıklayın ve "Bilgi Al" ı seçin, "Erişim Kontrolü" ne geçin ve "kod işareti" uygulamasının "her zaman erişime izin ver" listesinde olup olmadığına bakın. Bu yoruma bakın github.com/electron-userland/electron-builder/issues/… Yaptığım şey komut dosyalarını bir kez GUI'den çalıştırıp anahtar erişimi için "Her zaman izin ver" seçeneğine tıklamak ve sonra çalışmaya başladı.
ArticIceJuice

Yanıtlar:


241

Anahtar Zinciri Erişimi'ni açın , ardından Dosya menüsünde Tüm Anahtar Zincirlerini Kilitle'yi seçin .

Ardından Xcode'a geri dönün ve temizleyin ve yeniden oluşturun. Anahtar zincirinin kilidini açmak için sizden parolanızı tekrar isteyecektir.

Bundan sonra, başka derleme sorununuz olmadığını varsayarsak, başarılı olacaktır!


7
Bu aptalca kilitleme ve kilit açma işleminin yardımcı olması inanılmaz! Teşekkürler
Josip B.

8
Kabul edilen cevap bu olmalıdır. Yeniden başlatmadan çok daha mantıklı!
yonix

3
Benim için de çalıştı. 30 saniye Android için bir apk oluşturun, iOS için bir uygulama oluşturun .. 2hs.
Gabe

1
Cidden WTF ?! Teşekkürler!
Peter N Lewis

1
@FredericP Yakın zamanda şifremi değiştirmiştim. Dolayısıyla, anahtar zincirinin xcode tarafından en son açıldığı zaman ile bunu yapmak için kullanılan parola arasında bir etkileşim oldu.
sherrellbc

77

Kod imzalama mekanizmasında bir hata gibi görünüyor, Mac'inizi yeniden başlatmak sorunu çözmeli


farklı durum, ancak benzer hata mesajı - yeniden başlatma işe yaradı.
mikus

Yaklaşık dört yıl sonra ve hala çalışıyor! Altın Kuralı unuttum - "Şüpheniz varsa, yeniden başlatın!"
Alan

2
Daha az yıkıcı bir çözüm bekliyorsanız, aşağıdaki Mohit Manhas'ın cevabına bakın
yonix

bana yardım etmedi
Anoop Vaidya

70

Bu, oturum açma anahtar zinciri kilitlendiğinde gerçekleşir. Oturum açma anahtar zincirinin kilidini açmak için şunu çalıştırın:

security unlock-keychain login.keychain

Anahtar zinciriniz parola korumalıysa, -pseçeneği kullanarak parolayı belirtin .

Ardından derleme veya kod imzalama işlemini tekrar deneyin. Söz konusu hata kodu, Apple'ın belgelerinde dahili bir hata olarak açıklanmıştır , bu nedenle bunun başka durumlarda da meydana gelmesi tamamen mümkündür.


1
Maalesef bu çözüm tamamen döngüsel görünüyor: Yukarıdaki komutu çalıştırmak, parolayı girmenizi gerektiriyor, bu açık bir şekilde etkileşimli olmayan bir oturumda (bunu Jenkins gibi bir CI ajanı aracılığıyla yürütürken olduğu gibi) yapılamaz.
Konrad Rudolph

Bu iyi bir nokta - dediğiniz gibi, bu bir CI bot gibi etkileşimli olmayan bir oturum için uygun değil. Bir komut satırı oturumunda (örneğin, ssh aracılığıyla) uzak derlemeleri çalıştırırken kullanışlıdır.
cbracken

3
Jenkins'te benzer bir sorun yaşadık ve yukarıdaki komutta bahsedilenlere ek olarak şifreyi komuta argüman olarak iletmek zorunda kaldık, bu yüzden "security unlock-keychain -p $ KeychainPassword <login-keychain>" yaptık, KeychainPaasword'ü güvenli bir şekilde Jenkins üzerinde kolayca saklayabileceğiniz yer.
Mohit Tater

1
Bu gönderi için ne kadar teşekkür etsem azdır. Neden codesignbaşarısız olduğunu anlamaya çalışmak için birkaç gün harcadım ve bu beni kurtaran sihirli komut !!!
Dimu4

32

High Sierra/ Üzerinde aynı sorun vardı Xcode 9.4.1, tüm oturum açma girişimleri sonuçlandıerrSecInternalComponent

    • Anahtar Zinciri Erişimi'ne gidin
    • Oturum açma anahtar zincirine gidin
    • "Sertifikalarım" kategorisini seçin
    • İmzaladığınız sertifikayı bulun ve anahtarı görmek için genişletin.
    • Anahtarı çift tıklayın
    • "Erişim kontrolü" sekmesine gidin.
    • Anahtar erişim kontrolünü "Tüm uygulamaların bu öğeye erişmesine izin ver" olarak güncelleyin

Alternatif olarak:

mac terminalinde codeign komutunu çalıştırın ve anahtara / usr / bin / codign erişimine "Her zaman izin verin"

  1. Ssh / CI'dan imzalamaya çalışıyorsanız, şunu da çalıştırmanız gerekir

    security unlock-keychain login.keychain

    uygulama paketini imzalamadan önce


"Anahtar erişim kontrolünü" Tüm uygulamaların bu öğeye erişmesine izin ver "olarak günceller misiniz? Bunun ne anlama geldiği hakkında hiçbir fikrim yok.
Jon McClung

2
@JonMcClung Anahtar zinciri erişimini açın, oturum açma anahtar zincirine gidin - sertifikalarım. İmzaladığınız sertifikayı bulun, anahtarı görmek için genişletin. Tuşa çift tıklayın ve "Erişim kontrolü" sekmesini görmelisiniz.
Equilibrium

5
CI'dan @KonradRudolph security unlock-keychain -p <password> login.keychain.
Denge

1
@KonradRudolph, kod imzasının özel bir anahtara erişmesine izin verdiyseniz, güvenlik kilidi açma anahtar zinciri için bir şifre girmeniz gerekmez. Şifre olarak boş bir dizge bırakmak yeterlidir.
Kamil Szostakowski

1
@KonradRudolph muhtemelen ideal değil, ancak ~/.bash_profileanahtar zincirinin SSH istemcisi başlangıcında kilidini açması için bu kilit açma komutunu taşıyabilirsiniz, ancak CI betiğinizden ona başvurmanıza gerek yoktur
sschilli

17

Aynı problemle karşılaştım, macOS'umu yeniden başlatıyorum ve çalışıyor.

Çin'de geliştiriciler arasında bir söz var:

Küçük sorunlar, sadece yeniden başlatın Büyük sorunlar yeniden yüklenmeli.

Bazen yukarıdaki sözler size çok yardımcı olacaktır!


7
Amerika'da - 'Eski donanımı asla yeniden başlatma' diyoruz
Brant

@Brant Neden bu söze sahipsin? İlginç.
ifeegoo

Şaka yapıyorum - ama benzer bir sorun yaşadık ve sonunda eski bir sunucuyu yeniden başlatmaya başladık.
Brant

1
@ifeegoo Eski sunucular, yeniden başlatma konusunda sorun yaşayabilir (belki işletim sistemi kendi kendini güncelledi? Belki birisi önyükleme komut dosyalarını bozmuştur?) veya mevcut olan kimsenin bilmediği manuel başlatma prosedürlerine ihtiyaç duyabilir. Denemeden önce bilemezsin. Belki bios rom kötü gitmişti. Bu, düzgün bir şekilde tutulan bir ortamda sorun olmaması gereken şeylerden sadece biri, ancak denemeden önce gerçekten bilmiyorsunuz ve denememeyi tercih ediyorsunuz.
Lassi Kinnunen

1
@LassiKinnunen Haklısınız, biz Android ve iOS için mobil geliştiricileriz, bu yüzden bu tür bir durum sunucuları umursamıyor.Sunucular gerçekten tehlikeli, uygun değil.
ifeegoo

8

Başkasına yardımcı olması durumunda, bir errSecInternalComponenthatayla karşılaştım codesignçünkü onu macOS makinemde bir ssh oturumu üzerinden çalıştırıyordum. MacOS makinesindeki bir terminal penceresinden aynı komutu çalıştırmak işe yaradı.

Muhtemelen bunun nedeni codesign, oturum açma anahtar zincirinden özel anahtara erişime ihtiyaç duymasıdır.

Aynı oturumdan koşmak security unlock-keychain login.keychain( cbracken'in cevabıyla açıklandığı gibi ) da çalışmalıdır.


Bu çok garip, anahtar zinciri kilit açma komutunu çalıştırmak bile kod işareti hala çalışmadığı için sessizce başarısız görünüyor. Ancak aynı komutları uzak masaüstü kullanarak (SSH yerine) çalıştırmak iyi çalışıyor.
Maksimum

2

Ssh run komutundan imzalamaya çalışıyorsanız:

security unlock-keychain login.keychain

uygulama paketini imzalamadan önce

veya kullanıcı arayüzünden

Anahtar erişim kontrolünü "Tüm uygulamaların bu öğeye erişmesine izin ver" olarak güncelleyin

Thx to @ Equilibrium ve @Jon McClung


2

Aynı sorunu yaşadım Sorunun uygulamayı imzalayan kodla ilgili olduğunu öğrendim.

Opened the developer account and accepted the updated agreement and it worked.  

görüntü açıklamasını buraya girin


2

Koştum security unlock-keychain login.keychainve oturum açma parolam çalışmadı. Bu yüzden yeniden başlattım ve sonra Xcode'u tekrar çalıştırdım ve işe yaradı. Komutu çalıştırmak da işe yarıyor. Garip sorun.


2

@ Equilibrium tarafından yorumlardan birinde belirtildiği gibi, env komut satırındaysanız. Jenkins (benim durumum) gibi , çözümlerde bahsedilen security-unlock komutuna şifreyi iletmeniz gerekebilir .

Yani kullanmak yerine

security unlock-keychain login.keychain

kullanım:

security unlock-keychain -p <login-keychain-password> <path-to-login-keychain>

oturum açma yolu anahtar zincirinin $ HOME / Library / Keychains / login.keychain (benim durumum ) veya sadece login.keychain olabileceği yer


Cevabınız @ equilibrium cevabına dayanıyor, ama ben onu düşüneceğim. On Bambu CI beni yardımcı komut güvenlik kilidini-anahtarlık -p {hesap parolası} login.keychain
A.Kant

2

jenkins ve ssh'de bu sorunla karşılaşan herkes için:

Anahtar zincirinde özel anahtara erişim izni vermemiş olma ihtimaliniz yüksek, denedim ama neden tümünün çalışmadığından emin olamadım:

  1. -A veya -T / usr / bin / codign ile güvenlik içe aktarma .p12 dosyası
  2. security set-key-partition-list -S apple-tool:, apple:, codeign: -s -k # {password} # {keychainPath}
  3. tüm ön hazırlık profilini [UUID] .mobileprovision olarak değiştirin ve bunları jenkins sunucusundaki '~ / Library / MobileDevice / Provisioning \ Profiles'e kopyalayın
  4. türetilmiş verileri temizleyin ve jenkins sunucusunu yeniden başlatın
  5. varsayılan anahtar zincirinin oturum açma anahtarı olduğundan ve kilidinin açıldığından emin olun.

nihayet şu şekilde çözüldü:

1.ssh [kullanıcı] @ [jenkinsServerIP] -L 5900: localhost: 5900, jenkins sunucusunda oturum açın

2. 'vnc: // localhost'u açın

jenkins sunucunuz buna izin veriyorsa, bu uzak bir ekran başlatacaktır ...

sonra / usr / bin / codesign özel anahtara erişim vermek için keychain.app dosyasını açın

iyi şanslar


1

Mac terminalini kullanarak bir kez deneyin, ssh oturumundan değil

security unlock-keychain login.keychain

Ve sorulan iletişim kutusunda her zaman izin ver'i seçin. Ve sonra uzak oturumda xcodebuild yapabilirsiniz.


1

Anahtar zincirindeki kod imzalama sertifikasıyla ilişkili özel anahtara sağ tıklayın ve ardından derleme ssh aracılığıyla gerçekleştiği için benim için düzeltilen bir komut istemine güvenmek yerine 'tüm uygulamalara izin ver' seçeneğine tıklayın.


0

Yapmak zorundaydım:

1) projeyle ilişkili sertifikayı silin

2) Xcode'a geri dönün ve uygulama sertifikasını iptal edin

3) Xcode yeni bir sertifika gerektiriyor

4) Tüm Anahtar Zincirini Kilitle

5) Projeyi temizleyin

6) Yeniden Oluştur

Bu kadar. Umarım herkese yardımcı olur.


0

Yukarıdaki yöntemler benim için işe yaramaz.

Bunu şu şekilde çözdüm:

  1. Anahtar zinciri erişimini açın.
  2. Oturum Açma Menüsü'ne tıklayın.
  3. Tüm kişisel sertifikaları kaldırın.
  4. Projeyi temizleyin.
  5. Yeniden oluştur.

Bu kadar. Umarım herkese yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.