Błąd kodu: tożsamość certyfikatu pojawia się dwukrotnie

103

Błąd CodeSign: tożsamość certyfikatu „iPhone Developer: XXXX (12345678)” pojawia się więcej niż raz w pęku kluczy. Narzędzie do kodowania wymaga tylko jednego.

Więc idę do mojego pęku kluczy i go usuwam. Ale pojawia się ten błąd za każdym razem, gdy ponownie uruchamiam Xcode 4 i jakaś aplikacja dodaje wygasły stary certyfikat z powrotem do pęku kluczy. Jakieś pomysły dlaczego i która aplikacja?

Mugunth
źródło
możliwy duplikat problemu
zoul

Odpowiedzi:

99

Po prostu miałem ten sam problem. Zostało to naprawione. Nastąpiło to po przesłaniu aplikacji i zainstalowaniu kilku certyfikatów do podpisania aplikacji.

Szybka poprawka: Otwórz DOSTĘP KLUCZOWY> kliknij MOJE CERTYFIKATY> tam prawdopodobnie zobaczysz programista iPhone'a:. Prawdopodobnie zobaczysz to DWUKROTNIE! Wybierz ten z najwcześniejszą datą wygaśnięcia, kliknij prawym przyciskiem myszy i wybierz USUŃ.

Uruchom ponownie Xcode, jeśli nie masz. Działa teraz. :)

Miłego kodowania.

Louie
źródło
27
Jeszcze jeden krok! Musisz otworzyć Organizator w XCode i odświeżyć swoje profile aprowizacji po usunięciu zduplikowanego certyfikatu.
Meekohi
@Meekohi co masz na myśli mówiąc o „odświeżaniu” moich profili obsługi administracyjnej? dzięki!
abw333
7
Ponowne uruchomienie Xcode rozwiązało ten sam problem po usunięciu starego certyfikatu.
Maxim Mikheev
Na Xcode 4 (mam 4.4.1) musiałem usunąć WSZYSTKIE profile obsługi administracyjnej skojarzone ze starym certyfikatem. Następnie ponownie uruchomiłem Xcode i stary certyfikat przestał (magicznie) pojawiać się w pęku kluczy.
Roberto,
3
Pracował dla mnie z jednym dodatkiem (używam Xcode 4.6.3). Usunąłem wygasłe (lub najwcześniej wygasłe) certyfikaty, a następnie ponownie uruchomiłem Xcode i nadal miałem problem - stare certyfikaty w jakiś sposób pojawiły się ponownie w KeyChain Access. Tak więc ponownie uruchomiłem Xcode, ale zanim wybrałem projekt do otwarcia, wróciłem do KeyChain Access i stary certyfikat znów tam był, więc go usunąłem. Potem otworzyłem swój projekt (w już działającym Xcode) i wszystko poszło dobrze - mogłem znowu budować.
Ed Sinek
71

Myślę, że odkryłem, dlaczego proste usuwanie nie działa. Ponieważ certyfikat deweloperski jest nadal przechowywany w profilu aprowizacji, po zamknięciu / ponownym otwarciu Xcode po usunięciu certyfikatu z pęku kluczy zobaczyłem, że powrócił stary certyfikat. Więc ponownie go usuwam. Zadziałało.

Proste rozwiązanie do usuwania profilu nie zadziałało dla mnie.

Rozwiązanie, które zadziałało w moim przypadku:

  1. Zamknij Xcode
  2. Jeśli dostęp do pęku kluczy jest otwarty, nie zamykaj go.
  3. Uruchom Xcode teraz.
  4. Zobacz, że certyfikat, na który skarżył się Xcode, zostanie ponownie dodany do pęku kluczy podczas uruchamiania z jego pamięci podręcznej.
  5. Śmiało i usuń go.
  6. Skompiluj i szczęśliwego kodowania.
Mobilewits
źródło
3
Wypróbowałem wszystkie powyższe rozwiązania, a ten załatwił sprawę. Wydaje się, że istnieje wiele przyczyn / rozwiązań.
Nathan Hangen
+1: Mogę potwierdzić, że XCode rzeczywiście zachowuje "pamięć podręczną" certyfikatów i dodaje je przy uruchomieniu - to straszne, że tak działa! Powoduje tak wiele problemów! Wstydź się Apple, spowodowało to wiele godzin straconego czasu z powodu walki z tym!
JRG-Developer,
10

Właśnie spędziłem sporo czasu zmagając się z tym samym problemem. Po wszystkich próbach naprawienia tego w końcu zdałem sobie sprawę, że to błąd w Xcode. Ten post dał mi wskazówkę, jak to naprawić: certyfikaty magicznie pojawiają się w twoim pęku kluczy

W moim przypadku pasujący klucz prywatny znajdował się w pęku kluczy System i po prostu miał na sobie moje imię (trudno powiedzieć, że był przeznaczony do obsługi administracyjnej). Musiałem:

  • Przenieś powiązany klucz prywatny do pęku kluczy „login”
  • Zrestartowałem Xcode i zauważyłem, że klucz prywatny jest teraz wyświetlany jako skojarzony (potwierdza, do czego służy)
  • Usuń certyfikat i klucz prywatny
  • Uruchom ponownie Xcode i poof! Przestało dodawać mój stary certyfikat

Ciekawą obserwacją jest to, że kiedy usuwasz certyfikat, nie usuwa on związanego z nim klucza prywatnego. Wizualnie pokazuje klucz prywatny poniżej cert. Nie daj się zwieść.

Powodzenia!

Sean Aitken
źródło
usunięcie klucza prywatnego też działało - ostatnia aktualizacja xcode z października 2012 r. lew górski
ina
3

Mam ten sam problem z xcode45-DP1. to działa dla mnie:

  1. usuń wszystkie certyfikaty związane z Twoim kontem z pęku kluczy. WYJDŹ pęku kluczy

  2. usuń wszystkie profile informacyjne związane z Twoim kontem z xcode: organizer: device: Library: profile informacyjne. WYJDŹ xcode

  3. unieważnij swój certyfikat, zregeneruj go i pobierz na maszynę kompilacji

  4. przed pobraniem profilu informacyjnego kliknij Edytuj obok przycisku pobierania, aby upewnić się, że wybrano Twoją nazwę.

  5. Następnie pobierz profil informacyjny

  6. kliknij dwukrotnie certyfikat, aby zainstalować go w pęku kluczy

  7. przeciągnij profil informacyjny do xcode: organizer: device: Library: profile informacyjne

  8. nie klikaj przycisku odświeżania z xcode.

  9. wykonaj kompilację.

ccs
źródło
3

Odpowiedź jest tutaj

usuń wszystkie moje stare profile aprowizacji przy użyciu starego certyfikatu z Organizatorem, a następnie zamknij XCode, usuń stary certyfikat z pęku kluczy i uruchom ponownie XCode.

wygląda na to, że xcode zachowa certyfikaty, gdy w profilach aprowizacji znajdują się odwołania do

yeahdixon
źródło
1

Miałem problem z ponownym zapełnieniem certyfikatów zombie w moim pęku kluczy i dwukrotnym wyświetleniem tożsamości certyfikatu. Po prostu usunięcie zduplikowanego certyfikatu nie zadziałało.

W Xcode, kiedy patrzyłem na podpisywanie kodu w miejscu docelowym, przypomniałem sobie, że mam inny profil dystrybucji w kompilacjach „Ad Hoc” niż w kompilacjach „Release”.

Kiedy wygenerowałem nowy certyfikat, pobrałem nowy profil tylko dla kompilacji Ad Hoc, a nie dla wersji Release.

Xcode zawieszał się na certyfikacie dla obu tych profili i dlatego Xcode powodował duplikaty certyfikatów ... ponieważ zapomniałem poprawnie zaktualizować swoje profile.

Pamiętaj, aby zaktualizować WSZYSTKIE profile obsługi administracyjnej do nowego certyfikatu i zmienić WSZYSTKIE profile w tym samym czasie w Xcode.

Pamiętaj, aby zaktualizować wszystkie profile obsługi administracyjnej nowym certyfikatem, w przeciwnym razie Xcode spróbuje umieścić certyfikat dla OBU profili w pęku kluczy ... powodując zduplikowany błąd!

karlbecker_com
źródło
1

Miałem ten problem i przeczytałem każdą informację na jego temat, w końcu sam znalazłem rozwiązanie. To, o czym ludzie nie wspomnieli, to to, że PRZED wyczyszczeniem certyfikatów w organizatorze Xcode i PRZED wyczyszczeniem wygasłych kluczy w pęku kluczy musisz upewnić się, że nie masz żadnych wygasłych certyfikatów w portalu obsługi administracyjnej . Jeśli masz choćby jeden wygasły certyfikat dla starej aplikacji, która korzystała ze starego certyfikatu programisty, Xcode ściągnie go do swojego organizatora przy pierwszej kompilacji, a stamtąd przejdzie do pęku kluczy i spowoduje duplikat.

Segev
źródło
1

W moim przypadku "pamięć podręczna", na którą patrzył Xcode, była podłączonym urządzeniem iOS. Aby ustalić, czy jest to dla Ciebie problem:

  1. Odłącz wszystkie urządzenia iOS
  2. Usuń naruszający certyfikat i klucz prywatny z Dostępu do pęku kluczy
  3. Uruchom ponownie Xcode
  4. Sprawdź dostęp do pęku kluczy: w moim przypadku duplikat NIE został odtworzony w tym momencie
  5. Podłącz ponownie urządzenie iOS
  6. Zrestartuj Xcode ponownie
  7. Sprawdź dostęp do pęku kluczy: w moim przypadku duplikat został odtworzony w tym momencie

Jeśli jest to główna przyczyna dla Ciebie, możesz to obejść, odłączając urządzenia iOS przed uruchomieniem Xcode.

Simon Whitaker
źródło
0

Samo usunięcie zbędnego certyfikatu nie zadziałało. Wygląda na to, że za każdym razem, gdy wywoływane jest xcodebuild, jest to "Odtworzenie" certyfikatu w pęku kluczy z pamięci podręcznej ... ten sam problem co avi Stworzyłem dla niego hack / fix, próbowałem znaleźć miejsce, w którym plik był buforowany i wyczyść to, ale nie miałem szczęścia. W końcu to, co zadziałało (trochę hack, ale hej, co jeszcze możesz zrobić), to dowiedzieć się, jaki jest numer certyfikatu i ręcznie usunąć go z pęku kluczy wkrótce po wywołaniu xcodebuild. Najpierw przejdź do katalogu / usr / bin / (lub dowolnego katalogu, w którym znajduje się plik xcodebuild, spróbuj which xcodebuild) i uruchom następujące polecenie:

sudo mv xcodebuild xcodebuild_actual

Następnie utwórz plik za pomocą swojego ulubionego edytora (nie zapomnij o sudo) z następującym kodem:

xcodebuild_actual $* &
echo "xcodebuild started, waiting to wipe certificate, 10 seconds"
sleep 2
echo "Wiping Certificate..."
sudo security -v delete-certificate -t -Z 407629F811D52C0BB7AD31BBB18DCB496354B05E

Uwaga: musisz zmodyfikować plik sudoers, aby mieć dostęp do uruchomienia tego konkretnego polecenia bez konieczności wprowadzania hasła.

Zastąp tożsamość szesnastkową po -Z powyżej tożsamością szesnastkową certyfikatu naruszającego zombie. Na koniec upewnij się, że plik xcodebuild jest wykonywalny:

sudo chmod 755 xcodebuild 

Możesz teraz otworzyć pęku kluczy i uruchomić polecenie kompilacji, a także obserwować, jak naruszający certyfikat zombie zostaje wskrzeszony, a następnie natychmiastowo wystrzelony, zanim stanie się problemem przy kodowaniu. Miejmy nadzieję, że Apple wymyśli prawdziwe rozwiązanie tego problemu.

BadPirate
źródło
0

W moim przypadku nie udało się usunąć certyfikatów. Wydaje się, że XCode 4 buforuje je lub przywraca. Sztuczka, która w końcu zadziałała, polegała na uruchomieniu pęku kluczy i xcode. Następnie w pęku kluczy przeciągnij moje 2 certyfikaty (dev + dist) z „login” do „systemu”. Następnie duplikaty w magiczny sposób pojawiły się ponownie i udało mi się je usunąć, a następnie przeciągnąłem certyfikaty z powrotem do `` logowania ''

Piotr
źródło
0

To bardzo proste, wyeksportuj właściwy certyfikat na swój pulpit. Usuń ten certyfikat z pęku kluczy. Spróbuj zbudować źródło z komunikatem o błędzie (nie masz certyfikatu). Następnie ponownie zaimportuj certyfikat. => Sukces!

Giang
źródło
0

Właśnie usunąłem jeden z kluczy prywatnych z mojego pęku kluczy dla certyfikatu, którego już nie potrzebuję.

Mimo że certyfikat jest ponownie aplikowany, ale klucz prywatny nie pojawia się ponownie. Teraz sprawdź, czy są ważne certyfikaty, a pojawi się tylko jeden certyfikat, a pozostałe certyfikaty, których klucz prywatny został usunięty, nie będą już wyświetlane pod ważnymi certyfikatami.

Myślę, że to najprostszy sposób rozwiązania tego problemu.

swathy valluri
źródło
0

Kiedyś miałem do czynienia z tym samym problemem. I rozwiązałem to, usuwając nieużywany profil aprowizacji z karty Organizator w xcode. W rzeczywistości pęku kluczy otrzyma ten certyfikat z tego profilu aprowizacji, który jest certyfikatem, który wygasł lub został utworzony przez odwołany certyfikat.

Musisz więc tylko usunąć ten profil informacyjny z zakładki Organizator. Organizator znajduje się na prawym górnym przycisku xcode Otwórz go, a następnie w Organizatorze usuń profile udostępniania, których nie używasz.

Oto zrzut ekranu,

wprowadź opis obrazu tutaj

I nie zapomnij usunąć dodatkowego certyfikatu z pęku kluczy, ale potem ten certyfikat nie pojawi się ponownie.

Dilip
źródło