Xcode Command / usr / bin / codesign gagal dengan kode keluar 1: errSecInternalComponent

105

Saya mencoba menambahkan profil penyediaan baru ke Xcode saya, untuk menguji aplikasi di perangkat. Berikut langkah-langkah yang saya ikuti:

  1. Menghapus semua sertifikat dan profil penyediaan

  2. Buat / Tambahkan Sertifikat Pengembang IOS

  3. Tambahkan Perangkat IOS Saya Secara Online

  4. Buat Profil Penyediaan IOS

  5. Tambahkan Profil Penyediaan IOS

  6. Aplikasi Bersih

  7. Bangun Lalu Jalankan Aplikasi

  8. Setel Penandatanganan Kode dan Profil Penyediaan Dalam Pengaturan Build

  9. Banyak Googling> tidak berhasil

Inilah kesalahan yang saya dapatkan:

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
Alex Pelletier
sumber
1
Error tersebut berasal dari ketidakcocokan dalam penyiapan profil penyediaan dan sertifikat serta ID paket. Pastikan PP, bundle id, dan sertifikat Anda diatur dengan benar di dan ditetapkan dengan benar di itunes connect dan di aplikasi.
Alex Pelletier
1
Saya mengalami masalah ini dari Xcode 11.2.1 hingga 11.3 selama penandatanganan kode kerangka kerja yang saya buat. Tidak ada profil penyediaan yang terlibat. Jawaban dari Mohit Manhas menjelaskannya.
Daniel Zhang
Ini terjadi jika Anda menggunakan SSH dan tanda kode tidak diizinkan mengakses kunci pribadi di rantai kunci. Untuk memeriksanya, temukan kunci di Keychain, klik kanan dan pilih "Dapatkan Info", alihkan ke "Kontrol Akses" dan lihat apakah aplikasi 'kode tanda' ada dalam daftar "selalu izinkan akses". Lihat komentar ini github.com/electron-userland/electron-builder/issues/… Apa yang saya lakukan adalah menjalankan skrip sekali dari GUI dan mengklik "Selalu izinkan" untuk akses kunci, lalu mulai bekerja.
ArticIceJuice

Jawaban:

241

Buka Keychain Access , lalu di menu File pilih Lock All Keychains .

Kemudian kembali ke Xcode dan bersihkan dan bangun kembali. Ini akan meminta kata sandi Anda lagi untuk membuka kunci rantai kunci.

Setelah ini, dengan asumsi Anda tidak memiliki masalah kompilasi lain, itu akan berhasil!

Mohit Manhas
sumber
7
Sulit dipercaya bahwa kunci & buka kunci yang konyol ini membantu! Terima kasih
Josip B.
8
Ini harus menjadi jawaban yang diterima. Jauh lebih waras daripada reboot!
yonix
3
Bekerja untuk saya juga. Buat apk untuk Android 30 detik, buat aplikasi untuk iOS .. 2hs.
Gabe
1
Serius WTF ?! Terima kasih!
Peter N Lewis
1
@FredericP Bagi saya, saya baru saja mengubah kata sandi saya. Jadi ada beberapa interaksi antara terakhir kali gantungan kunci dibuka oleh xcode dan kata sandi yang digunakan untuk melakukannya.
sherrellbc
77

Sepertinya ada bug dalam mekanisme penandatanganan kode, memulai ulang Mac Anda akan menyelesaikan masalah

sigabrt.dll
sumber
kasus yang berbeda, tetapi pesan kesalahan serupa - restart bekerja.
mikus
Hampir empat tahun kemudian, dan itu masih berfungsi! Saya lupa Aturan Emas - "Jika ragu, reboot!"
Alan
2
Jika Anda menunggu solusi yang tidak terlalu merusak, lihat jawaban Mohit Manhas di bawah
yonix
tidak membantu saya
Anoop Vaidya
70

Ini terjadi saat rantai kunci masuk dikunci. Untuk membuka kunci rantai kunci login, jalankan:

security unlock-keychain login.keychain

Jika rantai kunci Anda dilindungi kata sandi, tentukan kata sandi menggunakan -popsi.

Kemudian coba operasi pembuatan atau penandatanganan kode lagi. Kode kesalahan yang dipermasalahkan dijelaskan dalam dokumen Apple sebagai kesalahan internal, jadi sangat mungkin ini terjadi dalam kasus lain juga.

cbracken.dll
sumber
1
Sayangnya solusi ini tampaknya sepenuhnya melingkar: menjalankan perintah di atas mengharuskan Anda memasukkan kata sandi, yang jelas tidak boleh dilakukan dalam sesi non-interaktif (seperti saat menjalankan ini melalui agen CI seperti Jenkins).
Konrad Rudolph
Itu poin yang bagus - seperti yang Anda katakan, ini tidak sesuai untuk sesi non-interaktif seperti bot CI. Ini berguna saat menjalankan build jarak jauh dalam sesi baris perintah (misalnya, via ssh).
cbracken
3
Kami memiliki masalah yang sama di Jenkins, dan sebagai tambahan dari apa yang disebutkan dalam perintah di atas, kami harus memberikan kata sandi sebagai argumen untuk perintah tersebut sehingga kami melakukan "security unlock-keychain -p $ KeychainPassword <login-keychain>", tempat Anda dapat dengan mudah menyimpan KeychainPaasword di Jenkins dengan aman.
Mohit Tater
1
Saya tidak bisa cukup berterima kasih untuk posting ini. Saya telah menghabiskan beberapa hari mencoba mencari tahu mengapa codesigngagal dan ini adalah perintah ajaib yang menyelamatkan saya !!!
Dimu4
32

Memiliki masalah yang sama di High Sierra/ Xcode 9.4.1, semua upaya untuk masuk diakhirierrSecInternalComponent

    • Buka Akses Rantai Kunci
    • Buka rantai kunci masuk
    • Pilih kategori "Sertifikat Saya"
    • Temukan sertifikat yang Anda gunakan untuk masuk dan perluas untuk melihat kuncinya.
    • Klik dua kali tombol tersebut
    • Buka tab "Kontrol akses".
    • Perbarui kontrol akses kunci menjadi "Izinkan semua aplikasi untuk mengakses item ini"

Kalau tidak:

jalankan perintah kode tanda pada terminal mac dan "Selalu izinkan" / usr / bin / kode tanda akses ke kunci

  1. Jika mencoba masuk dari ssh / CI Anda juga perlu menjalankan

    security unlock-keychain login.keychain

    sebelum mencoba untuk menandatangani app bundle

Keseimbangan
sumber
Dapatkah Anda menguraikan lebih lanjut tentang "perbarui kontrol akses kunci menjadi" Izinkan semua aplikasi untuk mengakses item ini "? Saya tidak tahu apa artinya itu.
Jon McClung
2
@JonMcClung Buka akses rantai kunci, buka masuk rantai kunci - sertifikat saya. Temukan sertifikat yang Anda gunakan untuk masuk, perluas untuk melihat kuncinya. Klik dua kali tombol tersebut dan Anda akan melihat tab "Kontrol akses". Switch untuk mengizinkan apakah ada
Equilibrium
5
@KonradRolol security unlock-keychain -p <password> login.keychaindari CI.
Ekuilibrium
1
@KonradRudol tidak perlu memberikan kata sandi untuk keamanan buka kunci-rantai kunci jika Anda mengizinkan kode masuk untuk mengakses kunci pribadi. Cukup meninggalkan string kosong sebagai kata sandi.
Kamil Szostakowski
1
@KonradRudolph mungkin masih tidak ideal tetapi Anda dapat memindahkan perintah buka kunci itu ~/.bash_profilesehingga rantai kunci terbuka pada startup klien SSH tetapi Anda tidak memerlukan referensi ke sana dari skrip CI Anda
sschilli
17

Saya menemui masalah yang sama, saya memulai ulang macOS saya, dan berhasil.

Di China, kami memiliki pepatah di antara pengembang:

Masalah kecil, restart saja. Masalah besar, harus diinstal ulang.

Terkadang pepatah di atas akan sangat membantu Anda!

ifeegoo
sumber
7
Kami telah mengatakan di Amerika - 'Jangan pernah reboot perangkat keras lama'
Brant
@Brant Mengapa Anda memiliki pepatah ini? Ini menarik.
ifeegoo
Hanya bercanda - tetapi kami memiliki masalah yang sama dan akhirnya terpaksa me-reboot server lama.
Brant
1
@ifeegoo Server lama dapat mengalami masalah saat boot kembali (mungkin os diperbarui sendiri? mungkin seseorang merusak skrip bootup?) atau memerlukan beberapa prosedur startup manual yang tidak diketahui siapa pun yang tersedia. Anda tidak bisa tahu sebelum mencobanya. Mungkin bios rom sudah rusak. Itu hanya salah satu dari hal-hal yang seharusnya tidak menjadi masalah dalam lingkungan yang dijaga dengan baik tetapi Anda tidak benar-benar tahu sebelum Anda mencoba dan Anda lebih suka tidak mencoba.
Lassi Kinnunen
1
@LassiKinnunen Anda benar, kami adalah pengembang seluler untuk Android & iOS, jadi situasi seperti ini tidak peduli dengan server. Server benar-benar berbahaya, tidak dapat ditempatkan.
ifeegoo
8

Jika itu membantu orang lain, saya mengalami errSecInternalComponentkesalahan codesignkarena saya menjalankannya melalui sesi ssh ke mesin macOS saya. Menjalankan perintah yang sama dari jendela terminal pada mesin macOS itu sendiri berfungsi.

Mungkin ini karena codesignmembutuhkan akses ke kunci pribadi dari rantai kunci masuk.

Berjalan security unlock-keychain login.keychain(seperti yang dijelaskan oleh jawaban cbracken ) dari sesi yang sama juga harus berfungsi.

jamesdlin.dll
sumber
Ini sangat aneh, bahkan menjalankan perintah buka kunci rantai kunci tampaknya gagal secara diam-diam karena kode kode masih tidak berfungsi. Tetapi menjalankan perintah yang sama menggunakan desktop jarak jauh (bukan SSH) berfungsi dengan baik.
Maksimal
2

Jika mencoba masuk dari perintah ssh run:

security unlock-keychain login.keychain

sebelum mencoba untuk menandatangani app bundle

atau dari UI

Perbarui kontrol akses kunci menjadi "Izinkan semua aplikasi untuk mengakses item ini"

Terima kasih untuk @Equilibrium dan @Jon McClung

Stas S
sumber
2

Saya memiliki masalah yang sama. Menemukan masalahnya adalah dengan penandatanganan kode aplikasi.

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

masukkan deskripsi gambar di sini

sahiljain
sumber
2

Saya menjalankan security unlock-keychain login.keychaindan kata sandi masuk saya tidak berfungsi. Jadi saya reboot, lalu jalankan Xcode lagi dan berhasil. Menjalankan perintah juga berfungsi. Masalah aneh.

sunapi386
sumber
2

Seperti yang ditunjukkan oleh @Equilibrium di salah satu komentar, jika Anda berada di baris perintah env. seperti Jenkins (kasus saya), Anda mungkin perlu meneruskan kata sandi ke perintah buka kunci keamanan yang disebutkan dalam solusi.

Jadi, alih-alih menggunakan,

security unlock-keychain login.keychain

menggunakan:

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

di mana rantai kunci jalur untuk masuk bisa $ HOME / Library / Keychains / login.keychain (kasus saya) atau cukup login.keychain

Mohit Tater
sumber
Jawaban Anda didasarkan pada jawaban @equilibrium, tetapi saya akan memahaminya. Di Bamboo CI saya membantu perintah keamanan unlock-keychain -p {account-password} login.keychain
A.Kant
2

untuk siapa saja yang mengalami masalah ini dari jenkins dan ssh:

kemungkinan tinggi bahwa Anda belum memberikan akses ke kunci pribadi di rantai kunci, saya mencoba tetapi tidak yakin mengapa semua ini tidak berfungsi:

  1. keamanan impor file .p12 dengan -A atau -T / usr / bin / kode tanda
  2. keamanan set-key-partition-list -S apple-tool:, apple:, codesign: -s -k # {password} # {keychainPath}
  3. ubah semua profil penyediaan ke [UUID] .mobileprovision dan salin ke '~ / Library / MobileDevice / Provisioning \ Profiles' di server jenkins
  4. bersihkan data turunan dan reboot server jenkins
  5. pastikan rantai kunci default adalah rantai kunci masuk dan membukanya.

akhirnya diselesaikan dengan:

1.ssh [user] @ [jenkinsServerIP] -L 5900: localhost: 5900, login ke server jenkins

2. buka 'vnc: // localhost'

ini akan meluncurkan layar jarak jauh, jika server jenkins Anda mengizinkan ini ...

lalu buka keychain.app untuk memberikan akses / usr / bin / codesign ke kunci pribadi

semoga berhasil

Xi Zhang
sumber
1

Coba saja sekali menggunakan terminal mac tetapi tidak dari sesi ssh

security unlock-keychain login.keychain

Dan pilih selalu izinkan di dialog yang diminta. Dan kemudian Anda bisa xcodebuild di sesi jarak jauh.

Felix
sumber
1

Mengklik kanan pada kunci pribadi yang terkait dengan sertifikat penandatanganan kode di rantai kunci, lalu mengklik 'izinkan semua aplikasi' alih-alih mengandalkan prompt, perbaiki untuk saya, karena pembuatan dilakukan melalui ssh.

Pellet
sumber
0

Saya harus:

1) hapus sertifikat yang terkait dengan proyek

2) Kembali ke Xcode dan cabut sertifikat aplikasi

3) Xcode membutuhkan sertifikat baru

4) Kunci semua Gantungan Kunci

5) Bersihkan proyek

6) Bangun kembali

Itu dia. Semoga bisa membantu siapa pun.

Andres Felipe
sumber
0

Metode di atas tidak berguna bagi saya.

Saya menyelesaikannya dengan:

  1. Buka akses rantai kunci.
  2. Klik Menu Login.
  3. Hapus semua sertifikat pribadi.
  4. Bersihkan proyek.
  5. Membangun kembali.

Itu dia. Semoga bisa membantu siapa pun.

yerwoo_gmail
sumber