ошибка разработки кода с возвращением CSSM_SignData: 8001094A

#objective-c #xcode #codesign

#objective-c #xcode #codesign

Вопрос:

У меня очень досадная проблема с разработкой кода: у меня есть 2 компьютера Mac (M1, M2) и 2 сертификата разработчика (C1, C2). Хотя цепочки ключей выглядят одинаково на M1 и M2, у меня есть следующие результаты с codesign:

  • codesign (M1, C1) в порядке
  • codesign (M1, C2) nok
  • codesign (M2, C1) nok
  • codesign (M2, C2) в порядке

Поэтому, когда я успешно создаю свой проект на M1 с помощью C1, я не могу перенести репозиторий в M2 и снова выполнить сборку с помощью C1, я должен перейти на C2, чтобы добиться успеха. При ошибке codesign возвращает сообщение об ошибке ‘CSSM_SignData возвращено: 8001094A’, за которым следует ‘неизвестная ошибка -2070 = fffff7ea’.

Комментарии:

1. Вы когда-нибудь решали эту проблему? Я вижу точно такой же код ошибки. Приведенный ниже ответ о подписании только с одного компьютера полностью неверен. Обычно это работает, но только сейчас эта ошибка начала выдаваться.

Ответ №1:

Чтобы подписать ваше приложение на компьютере, сертификат должен быть запрошен только с этого компьютера. Таким образом, вы не можете выполнять сборку с C1 на M2 и наоборот.

К сожалению, эта информация попадает в project.pbxproj, который имеет решающее значение и должен поддерживаться системой управления версиями. Я не думаю, что есть какой-либо способ избежать размещения такого рода информации о конкретной машине в системе управления версиями.

Однако существует один вариант «Автоматического выбора профиля», когда вы выбираете сертификат для подписи. Я еще не тестировал его на отдельных компьютерах, но похоже, что он автоматически выберет правильный сертификат для нужного компьютера. Но если это не так, то вам придется каждый раз вручную выбирать сертификат.

Способ, которым моя команда делает это, заключается в том, что у нас разные MAC для разработчиков, и мы выполняем все наши подписи с одного конкретного Mac.

Комментарии:

1. Это звучит разумно, и «Автоматический выбор профиля», похоже, работает. Большое вам спасибо!

Ответ №2:

вы можете экспортировать сертификаты из keychain в формате .p12 и установить их в другой системе. Если вы установите файл .cer на другой компьютер, он не будет работать! попробуйте экспортировать их и установить в другой системе.