Codesign возвращает неизвестную ошибку -1 = ffffffffffffffff

Я попытался подписать код приложения iOS, Это шаги, которые я следил за

    security create-keychain -p password ${KEYCHAIN}
    security set-keychain-settings -u -t 300 ${KEYCHAIN}
    security list-keychains -d user -s login.keychain ${KEYCHAIN}
    security import "$1" -k ${KEYCHAIN} -A -P "${PASSPHRASE}" -A >/dev/null
    security unlock-keychain -p password ${KEYCHAIN}

    /usr/bin/codesign -f -s $IDENTITY --keychain $KEYCHAIN --entitlements $ENTITLEMENTS Payload/Test.app

Это вернуло меня Codesign вернула неизвестную ошибку -1 = ffffffffffffffff через ssh.

Если я непосредственно выполняю команду кодового знака в машине, она успешно подписывается.

Проблема только в Mac OS Sierra.

Ответ 1

С той же проблемой некоторое время назад добавив

security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k password ${KEYCHAIN}

решил это для меня.

Ответ 2

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

Иногда Keychain, кажется, попадает в поврежденное состояние. Также можно использовать MacOS Sierra.

Симптомы:

Relogin необходимо получить доступ к учетным записям после перезапуска Xcode Relogin необходимо для доступа к учетным записями после перезапуска Xcode

Запрос пароля при использовании Keychain Access для некоторых операций Запрос пароля при использовании Keychain Access для некоторых операций

Доступ к ключам - ошибка при доступе к логинному цепочке ключей с помощью настроек изменения для брелка... Доступ к цепочке ключей - ошибка при доступе к логинному цепочке ключей с помощью настроек изменения для брелка...

Для меня это фиксирует и разблокирует (требуется пароль) задействованный Keychain, login в моем случае.

Ответ 3

@madhu Я пытаюсь исправить ту же проблему и обнаружил, что Access Control для ключа, связанного с данным сертификатом, был настроен на "Подтвердить, прежде чем разрешить доступ", который не работал в Jenkins. Я изменил его (через Keychain Access gui - Get Info, Access Control), чтобы "Разрешить всем приложениям обращаться к этому элементу", и моя сборка была успешной.

Ответ 4

Я собираюсь чип, так как мне пришлось попробовать еще несколько вещей, чем упомянутые здесь: проблема в том, что keychain не любит сеансы SSH. Мне пришлось выполнить их на моей сессии, чтобы исправить это:

security unlock-keychain -p MY_PASS ~/Library/Keychains/login.keychain
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k MY_PASS ~/Library/Keychains/login.keychain
security set-keychain-settings ~/Library/Keychains/login.keychain

Я также удалил свои текущие сертификаты системы/сертификаты учетной записи, удалив мою учетную запись из XCode (я использую fastlane для создания здания), но я подозреваю, что это не должно было повлиять на нее.

Ответ 5

Возможно, вы экспортировали некоторый файл, например p12, из KeyChain, и когда ОС запросила пароль root, и вы его отрицали, тогда Xcode будет кодировать ошибку с этой информацией.

Если это возможно, вы должны повторить вышеуказанное действие, ввести свой пароль и щелкнуть разрешить, а затем это будет нормально для кодового знака.

Ответ 6

Я пробовал почти все существующие предложения по сети, никто из них не помог...

Наконец, только перегенерировав профиль Provisioning Profile (для AdHoc), перезагрузив его и разместив на ~/Library/MobileDevice/Provisioning Profiles/, перезапись существующей сохранена моя жизнь.

Кстати, сборка AppStore прошла успешно все это время, поэтому проблема была определенно в самом профиле AdHoc (довольно странно, так как это выглядело неплохо).

Ответ 7

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

Откройте Keychain Access, найдите ключ для своего сертификата подписи (login- > Certificates, затем разверните сертификат, чтобы открыть его ключ). Щелкните правой кнопкой мыши по ключу и выберите: Получить информацию → Контроль доступа и выберите "Разрешить всем приложениям доступ к этому элементу".