Устранение неоднозначности сертификата CodeSign с несколькими сертификатами разработчика - PullRequest
12 голосов
/ 10 ноября 2009

Я недавно поработал для другой компании, создав для них приложение для iPhone. Разделяя время разработки между их офисами, их компьютерами и моим офисом, я сгенерировал ключ и подписал его в рамках своей команды разработчиков iPhone Dev Center.

У меня уже была учетная запись Dev Center и собственный сертификат разработчика. После импорта сертификата для клиентского проекта, подписав это приложение, я получаю предупреждение от CodeSign о том, что находит несколько сертификатов, соответствующих «iPhone Developer: Steve Madsen», но выбирает правильный и подписывает двоичный файл.

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

Разработчик iPhone: Стив Мэдсен: неоднозначный (соответствует «Разработчик iPhone: Стив Мэдсен (9E69FVL37K)» и «Разработчик iPhone: Стив Мадсен» в /Volumes/Users/steve/Library/Keychains/login.keychain)

Сертификат клиента - это сертификат с (9E69FVL37K), который, как я полагаю, позволяет CodeSign выяснить ситуацию в проекте моего клиента.

Как я могу настроить проект XCode для использования правильной идентификации? Выбор определенного (не автоматического выбора профиля) в настройках целевой сборки не помогает.

Еще лучше, хотя Apple ожидала, что разработчик может быть членом нескольких команд, я не нашел документации о том, как такой разработчик, как я, должен настраивать свою среду. Генерация второго ключа / сертификата казалась единственным способом сделать эту работу, так как профили обеспечения должны быть связаны с сертификатами в программном портале одной команды. У кого-нибудь есть хороший совет, как заставить этот процесс работать гладко?

Ответы [ 3 ]

5 голосов
/ 13 ноября 2009

Сегодня вечером я сделал решающий шаг и решил отозвать свой старый сертификат и сгенерировать новый. Мое предположение было верным: Apple теперь выпускает все сертификаты с суффиксом (шестнадцатеричной).

Xcode достаточно умен, чтобы поступать правильно. Я выбираю «iPhone Developer» (автоматический выбор) в настройках цели. Он определяет, какой из моих ключей должен быть использован для подписи двоичного файла, на основе профиля обеспечения, а затем указывает кодовому знаку использовать именно эту идентификацию, включая суффикс (шестнадцатеричная).

Держу пари, что новые разработчики iPhone никогда не увидят эту проблему, потому что они сгенерировали свой первый сертификат после того, как Apple начала добавлять суффикс.

Напоминание всем, кто должен это сделать: вам также нужно исправить все существующие профили обеспечения и переустановить их.

0 голосов
/ 07 января 2010

Спасибо Стиву Мэдсену за то, что он указал на это. Apple теперь выпускает все сертификаты с суффиксом (HEXSTRING). Это означает, что если у вас есть сертификат для RUPERTO DE GUZMAN, вам необходимо отозвать его из ПРОГРАММНОГО ПОРТАЛА -> СЕРТИФИКАТЫ. Затем создайте НОВЫЙ сертификат. Ваш новый сертификат теперь будет RUPERTO DE GUZMAN (EZxxxxxxxx).

Теперь кодовый знак больше не будет путать с префиксами, потому что у нас есть:

ДО:

РУПЕРТО ДЕ ГУЗМАН

РУПЕРТО ДЕ ГУЗМАН (89xxxxxxx)

ПОСЛЕ:

РУПЕРТО ДЕ ГУЗМАН (EZxxxxxxx)

РУПЕРТО ДЕ ГУЗМАН (89xxxxxxx)

0 голосов
/ 12 ноября 2009

До сих пор я работал с 3 командами и использую 3 отдельных аккаунта iTunes, по одному для каждой (так, 3 отдельных адреса электронной почты). Я знаю, что это не похоже на оптимальную ситуацию, особенно если вы работаете в большем количестве команд, чем это.

Однако мне интересно, может ли быть другой путь. Потому что, если вы можете связать свою учетную запись iTunes (пользователя центра разработки iPhone) с несколькими командами, то что произойдет, когда вы войдете в Центр разработки? У вас есть несколько вариантов ввода нескольких «Порталов Progrma для разработчиков iPhone»?

...