Команда Xcode/usr/bin/codesign завершилась с кодом выхода 1: errSecInternalComponent

Я пытаюсь добавить новый профиль обеспечения в мой XCode, чтобы протестировать приложение на устройстве. Вот шаги, за которыми я следовал:

  1. Удалены все сертификаты и профили обеспечения

  2. Создать/добавить IOS Dev Certificate

  3. Добавить мое IOS устройство онлайн

  4. Создать профиль обеспечения IOS

  5. Добавить профиль обеспечения IOS

  6. Чистое приложение

  7. Приложение "Построить и запустить"

  8. Установите Codesigning и Provisioning Profile в настройках сборки

  9. Много гуглить> безуспешно

Вот ошибка, которую я получаю:

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

Откройте доступ к цепочке для ключей, затем в меню Файл выберите заблокировать все цепочки для ключей.

Затем вернитесь в Xcode, очистите и восстановите. Он снова запросит ваш пароль, чтобы разблокировать связку ключей.

После этого, если у вас нет других проблем с компиляцией, все будет успешно!

Ответ 2

Кажется, что ошибка в механизме подписи кода, перезапуск вашего mac должен решить проблему.

Ответ 3

Это происходит, когда цепочка для ключей входа в систему заблокирована. Чтобы разблокировать связку ключей входа в систему, выполните:

security unlock-keychain login.keychain

Затем попробуйте снова выполнить сборку или подпись кода. Рассматриваемый код ошибки описывается в документации Apple как внутренняя ошибка, поэтому вполне возможно, что это происходит и в других случаях.

Ответ 4

Если в High Sierra/Xcode 9.4.1 errSecInternalComponent та же проблема, все попытки подписи завершились errSecInternalComponent

    • Перейти к Keychain Access
    • Перейти на брелок для входа
    • Выберите категорию "Мои сертификаты"
    • Найдите сертификат, с которым вы подписываете, и раскройте его, чтобы увидеть ключ.
    • Дважды щелкните ключ
    • Перейдите на вкладку "Контроль доступа".
    • Обновите контроль доступа к ключу, чтобы "Разрешить всем приложениям доступ к этому элементу"

В качестве альтернативы:

запустить команду codeign на терминале Mac и "Всегда разрешать"/usr/bin/codesign доступ к ключу

  1. Если вы пытаетесь подписать из SSH/CI, вам также нужно запустить

    security unlock-keychain login.keychain
    

    прежде чем пытаться подписать комплект приложений

Ответ 5

Я столкнулся с той же проблемой, я перезагружаю MacOS, и она работает.

В Китае у нас есть поговорка между разработчиками:

Маленькие проблемы, просто перезагрузите. Большие проблемы, должны переустановить.

Иногда вышесказанное очень поможет вам!

Ответ 6

В случае, если это помогает кому-то еще, я столкнулся с ошибкой errSecInternalComponent с codesign потому что я выполнял ее через сеанс ssh на моем компьютере с macOS. Выполнение той же команды из окна терминала на самой машине MacOS работало.

Предположительно, это связано с тем, что для codesign требуется доступ к закрытому ключу из цепочки для ключей входа в систему.

Запуск security unlock-keychain login.keychain (как объяснено в ответе cbracken) из той же сессии также должен работать.

Ответ 7

Если вы пытаетесь подписать команду ssh run:

security unlock-keychain login.keychain

прежде чем пытаться подписать комплект приложений

или из интерфейса

Обновите контроль доступа к ключу, чтобы "Разрешить всем приложениям доступ к этому элементу"

Спасибо @Equilibrium и @Jon McClung

Ответ 8

Я запустил систему security unlock-keychain login.keychain и мой пароль для входа не работал. Поэтому я перезагрузился, а затем просто снова запустил Xcode, и это сработало. Запуск команды работает также. Странный вопрос.

Ответ 9

Просто попробуйте один раз, используя Mac терминал, но не из ssh сессии

security unlock-keychain login.keychain

И выберите всегда разрешить в диалоговом окне. И тогда вы могли бы xcodebuild в удаленном сеансе.

Ответ 10

У меня была такая же проблема. Обнаружил, что проблема с подписанием кода приложения.

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

enter image description here

Ответ 11

Перезапуск mac не всегда работает и не является правильным решением, я все еще испытываю подобные проблемы в CI, пытающемся построить режим Debug

Ответ 12

Как указано @Equilibrium в одном из комментариев, если вы находитесь в командной строке env. как и Дженкинс (в моем случае), вам может потребоваться передать пароль команде security-unlock, упомянутой в решениях.

Поэтому вместо использования

security unlock-keychain login.keychain

использование:

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

где цепочка ключей для входа в систему может быть $ HOME/Library/Keychains/login.keychain(в моем случае) или просто login.keychain

Ответ 13

для тех, кто сталкивался с этой проблемой от jenkins и ssh:

высокая вероятность того, что вы не предоставили доступ к закрытому ключу в связке ключей, я пытался, но не уверен, почему все они не работают:

  1. импортировать файл безопасности .p12 с -A или -T/usr/bin/codesign
  2. набор ключей безопасности -L ist -S apple -T ool:, apple:, код:: -S -k # {пароль} # {keychainPath}
  3. измените весь профиль обеспечения на [UUID].mobileprovision и скопируйте их в "~/Library/MobileDevice/Provisioning\Profiles" на сервере jenkins
  4. очистить полученные данные и перезагрузить сервер jenkins
  5. убедитесь, что брелок по умолчанию это брелок для входа и разблокировал его.

окончательно решено с помощью:

1.ssh [пользователь] @[jenkinsServerIP] -L 5900: локальный хост: 5900, войдите на сервер jenkins

2. открыть 'vnc://localhost'

это запустит удаленный экран, если ваш сервер jenkins разрешит это...

затем откройте keychain.app, чтобы предоставить доступ /usr/bin/codesign к закрытому ключу

удачи

Ответ 14

Щелкнув правой кнопкой мыши по закрытому ключу, связанному с сертификатом кодового обозначения в цепочке для ключей, и затем нажав "разрешить все приложения", вместо того, чтобы полагаться на подсказку, исправил это для меня, поскольку сборка происходила через ssh.