2015-03-03 2 views
4

Я начал получать ошибку кода после истечения срока действия сертификата. У меня есть обновленный сертификат, и истек срок его действия был удален. Но почему-то Xcode устанавливает EXPANDED_CODE_SIGN_IDENTITY с SHA-1 сертификата с истекшим сроком действия. Где он получает эту ценность? Я предполагаю, что он должен быть кэширован где-то, потому что в цепочке ключей нет сертификата с SHA-1, который он пытается использовать для подписи кода. Я искал файл pbxproj и не нашел его, и рекурсивный grep, начиная с корня проекта, не дал никаких результатов.Как установить Xcode EXPANDED_CODE_SIGN_IDENTITY?

Вот некоторые подробности о моей конфигурации:

  • Там нет учетной записи устанавливается в Xcode
  • Вместо учетной записи разработчика, я использую экспортированный сертификат из команды агент
  • Xcode версии является 6.1.1
  • OSX версии 10.10.2

идентичность проект создан в Xcode, как это : enter image description here

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

$ security find-identity -p code signing 
Policy: Code Signing 
    Matching identities 
    1) F1326572E0B71C3C8442805230CB4B33B708A2E2 "iPhone Developer: XXX XXX (C395QGL4DK)" 

В выходе сборки я вижу переменная окружения установлена ​​неправильно:

export EXPANDED_CODE_SIGN_IDENTITY=9F5616A53464FC5C003847ED620357A7BC72ABB1 

Я попытался исправить это:

  • Удалить сертификат из Keychain Access и повторно добавить его
  • Установите Контроль доступа частного ключа Разрешить все приложения
  • Удалить все профили инициализации и повторно добавить один я использую
  • Удалить все под ~/Library/Developer/Xcode/DerivedData
  • Удалить все под ~/Library/кэши/com.apple.dt.Xcode
  • Restart Xcode
  • Перезагрузите Mac

я сейчас запустить НУ Идеи для вещей, чтобы попытаться. Есть два других разработчика, с которыми я работаю, и оба они сначала столкнулись с одной и той же проблемой. Тем не менее, они снова работают после выполнения тех же шагов, которые я пробовал. Мы все используем один и тот же сертификат, тот же файл обеспечения и те же настройки проекта. Это должна быть настройка или затяжной кеш, который находится в моей системе, но я не смог его найти.

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

ответ

1

У меня был один и тот же вопрос и для меня ответ был довольно прост: я пытался использовать профиль обеспечения, который был привязан к старому сертификату (я предполагаю, что EXPANDED_CODE_SIGN_IDENTITY вытащили из профиля, который вы пытаетесь использовать).

В любом случае, после создания нового профиля в центре dev, привязанного к новому сертификату, это прекратилось.

+0

В отсутствие чего-либо документированного, что я могу найти, я считаю, что вы правы. Я открыл профиль подготовки в текстовом редакторе и нашел две ссылки на сертификаты разработчика. Я скопировал текст для каждого, база 64 расшифровала их, а затем отправила их как вход в openssl. У одного был тот же SHA-1, что и «плохой» сертификат, а другой соответствовал «хорошему» сертификату. Я не уверен, почему Xcode выбирает плохой, но на исходный вопрос был дан ответ. –

0

, если это поможет, я использую Дженкинс построить приложение, так что все команды выполняются из консоли ... Так я уже выключил CODE_SIGNING_ALLOWED и «перекрытая» EXPANDED_CODE_SIGN_IDENTITY_NAME и EXPANDED_CODE_SIGN_IDENTITY. По какой-то причине это помогло мне создать приложение с правильной идентификацией.

xcodebuild -project my.xcodeproj/ -sdk iphoneos \ 
CODE_SIGNING_REQUIRED=YES \ 
CODE_SIGNING_ALLOWED=NO \ 
CODE_SIGN_IDENTITY="My Identity" \ 
EXPANDED_CODE_SIGN_IDENTITY_NAME="My Identity" \ 
EXPANDED_CODE_SIGN_IDENTITY=<CODE_SIGN_IDENTITY> 

Последний один может быть получен с

security find-certificate -a -c "My Identity" -Z|grep ^SHA-1|cut -d " " -f3|uniq 
+0

Мы используем jenkins на сервере сборки, и, похоже, с подписями кода. Я считаю, что это потому, что он имеет ручную конфигурацию, а Xcode делает все автоматически. –

+0

Ну, так как наш проект - проект Unity, файл xcproject генерируется Unity. –

+0

Я столкнулся с этой проблемой, когда мой сертификат истек, и я должен использовать другой. Этот трюк помог мне заставить xcodebuil использовать код, соответствующий правильному. –

Смежные вопросы