Команда Xcode/usr/bin/codesign завершилась с кодом выхода 1: errSecInternalComponent
Я пытаюсь добавить новый профиль обеспечения в мой XCode, чтобы протестировать приложение на устройстве. Вот шаги, за которыми я следовал:
-
Удалены все сертификаты и профили обеспечения
-
Создать/добавить IOS Dev Certificate
-
Добавить мое IOS устройство онлайн
-
Создать профиль обеспечения IOS
-
Добавить профиль обеспечения IOS
-
Чистое приложение
-
Приложение "Построить и запустить"
-
Установите Codesigning и Provisioning Profile в настройках сборки
-
Много гуглить> безуспешно
Вот ошибка, которую я получаю:
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 доступ к ключу
-
Если вы пытаетесь подписать из 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:
высокая вероятность того, что вы не предоставили доступ к закрытому ключу в связке ключей, я пытался, но не уверен, почему все они не работают:
- импортировать файл безопасности .p12 с -A или -T/usr/bin/codesign
- набор ключей безопасности -L ist -S apple -T ool:, apple:, код:: -S -k # {пароль} # {keychainPath}
- измените весь профиль обеспечения на [UUID].mobileprovision и скопируйте их в "~/Library/MobileDevice/Provisioning\Profiles" на сервере jenkins
- очистить полученные данные и перезагрузить сервер jenkins
- убедитесь, что брелок по умолчанию это брелок для входа и разблокировал его.
окончательно решено с помощью:
1.ssh [пользователь] @[jenkinsServerIP] -L 5900: локальный хост: 5900, войдите на сервер jenkins
2. открыть 'vnc://localhost'
это запустит удаленный экран, если ваш сервер jenkins разрешит это...
затем откройте keychain.app, чтобы предоставить доступ /usr/bin/codesign к закрытому ключу
удачи
Ответ 14
Щелкнув правой кнопкой мыши по закрытому ключу, связанному с сертификатом кодового обозначения в цепочке для ключей, и затем нажав "разрешить все приложения", вместо того, чтобы полагаться на подсказку, исправил это для меня, поскольку сборка происходила через ssh.