Я делаю приложение .Net MAUI, которое хочу опубликовать на iOS.
Я сделал это успешно со своего основного ПК после регистрации в программе разработки Apple и создания всех необходимых ключей и сертификатов. Однако теперь я пытаюсь работать со своего ноутбука и не могу запустить Hot Start:
Произошла ошибка при попытке автоматически подготовить проект: «Сертификат: Apple Development: Created via API () уже существует, но не может быть найден в локальной цепочке ключей. Возможно, он был создан на другой машине разработки. Импортируйте сертификат и закрытый ключ с этого компьютера или отзовите его и повторите попытку автоматического создания нового.
Теперь я могу жить с этим пока. Однако завтра мне понадобится мой ноутбук, чтобы опубликовать приложение в App Store, потому что у меня дома нет Mac.
В первый раз, когда я получил эту ошибку, я был сбит с толку, потому что пытался аутентифицироваться с тем же сертификатом, который я использую на другой машине. Затем я попытался создать вторую пару сертификатов на этой машине и использовать ее, однако это снова не сработало. Точно такая же ошибка, что странно, потому что, когда я добавил новый сертификат в настройки Xamarin.AppleAcount, ошибка содержала ключ сертификата из моего исходного сертификата (тот, который работает на другом компьютере).
Я еще не пытался отменить это, но я не хочу этого делать, потому что я не хочу рисковать сломать настройку, которая у меня работает, только для того, чтобы она снова вышла из строя на моем ноутбуке.
@ToolmakerSteve VS требует, чтобы я предоставил открытый ключ, эмитента и путь к файлу сертификата, поэтому я не могу обойти это. Я загрузил файл частного сертификата в частный репозиторий github. Проект вообще не связан с сертификатами, а VS 2022 на моем ноутбуке - это новая новая установка (я еще даже не импортировал настройки с моего ПК)
Частный репозиторий github каким-то образом используется VS в сертификации? В худшем случае, вероятно, есть какой-то хакерский способ очистить состояние тестового устройства, чтобы переключить его между двумя разными ПК VS, каждый со своим сертификатом. Что произойдет, если вы вручную удалите приложение с устройства, а затем подключитесь ко второму компьютеру с собственным сертификатом?
@ToolmakerSteve, частное репо — это просто то, как я перемещаю файл сертификата с одной машины на другую. Это была хорошая идея, удалить приложение, но, к сожалению, результат тот же.
@ToolmakerSteve, зачем сертификату нужна любая машина? Насколько я понимаю, цель состоит в том, чтобы проверить себя перед Apple API. Какая разница, буду ли я тестировать на одном устройстве или на нескольких? А если я использую несколько машин для разработки?
Я согласен; это один существенный вопрос. Другой вопрос, где происходит конфликт? Если нет какой-то странной зависимости от информации на сервере сертификатов Apple (потому что VS приходится обходить некоторую зависимость от Apple, которая предполагает, что задействована цепочка ключей Mac, и не предоставляет VS на ПК такой же уровень доверия? Хвататься за соломинку здесь. ), то либо на устройстве, либо где-то на ПК. (1) В отношении устройства: убедитесь, что информация не кэширована: выключите и снова включите устройство после удаления приложения. (2) Для ПК: может быть, что-то кэшировано в .csproj? Или в .obj, .bin или скрытом .vs проекта?
В (2) я предполагаю, что второму ПК предоставляется собственный сертификат с закрытым ключом.
Давайте продолжим обсуждение в чате.
Создание различных сертификатов и профилей — это решение, вы также можете импортировать сертификат на другой компьютер Mac или Windows. Для этого вам нужно экспортировать файл p12 из Связки ключей на вашем первом Mac.
Подробные шаги: Откройте Доступ к цепочке ключей -> Логин-> Сертификаты> Разверните сертификат, чтобы был виден связанный закрытый ключ, щелкните ключ правой кнопкой мыши и выберите Экспорт. (Вам будет предложено ввести имя файла и пароль) Перенесите и сохраните файл на другой Mac, затем импортируйте сертификат: Откройте Доступ к связке ключей -> Файл-> Импортировать элементы-> выберите экспортированный сертификат (введите пароль).
Если вы хотите импортировать этот сертификат на свой компьютер с Windows: Откройте VS->Инструменты->Параметры->Xamarin->Учетные записи Apple->выберите свою команду->Просмотр сведений->Импорт сертификата. После этого вы можете загрузить профиль подготовки и дважды щелкнуть профиль для установки на свой Mac (для Windows, вы можете открыть VS-> Инструменты-> Параметры-> Xamarin-> Учетные записи Apple-> выберите свою команду-> Просмотреть подробности-> Загрузить все профили) Затем вы можете выбрать соответствующий сертификат и профиль подготовки в Свойства-> iOS -> Подписание пакета-> Ручная подготовка.
Кроме того, вы также можете обратиться к этому случаю с тем же сообщением об ошибке Горячий перезапуск Xamarin: получить «Сертификат уже существует, но его нельзя найти в локальной цепочке ключей» и исправить эту ошибку без создания разных сертификатов и профилей.
Спасибо. Я попробую все это, когда у меня будет возможность в следующие дни, и я свяжусь с вами.
Пожалуйста. Ждем ваших отзывов. @Алекс
Экспорт в файл .p12 помог, большое спасибо. Ранее я пытался импортировать файлы .cer, но это не сработало. Также до импорта .p12 мои сертификаты были известны VS, но их статус был «Отсутствует в цепочке ключей», а после импорта они «Действительны». Я предполагаю, что с помощью файлов p12 импортированы закрытые ключи? Возможно, это также можно сделать, вручную загрузив сертификаты с Apple Developer и установив их в Windows, но я не пробовал этого, так как не хотел бы испортить свою текущую конфигурацию.
«Я пытался пройти аутентификацию с помощью того же сертификата» — [Вы упоминаете пару ключей, так что извините, если это очевидно.] Вы уверены, что у вас есть этот закрытый ключ на втором компьютере? Я понятия не имею, как это работает на ПК, но с Mac необходимо вручную экспортировать закрытый ключ из цепочки для ключей первого Mac, импортировать его на второй Mac. (Просто общедоступного сертификата недостаточно.) Что касается упоминания об оригинальном сертификате - у меня есть смутное представление о том, что либо проект, либо устройство придерживаются упоминания об оригинале. Может быть, вы можете найти это и очистить его?