ข้อผิดพลาดในการออกแบบรหัส: ข้อมูลประจำตัวใบรับรองปรากฏขึ้นสองครั้ง


103

ข้อผิดพลาด CodeSign: ข้อมูลประจำตัวใบรับรอง "iPhone Developer: XXXX (12345678)" ปรากฏในพวงกุญแจมากกว่าหนึ่งครั้ง เครื่องมือการเขียนโค้ดต้องมีเพียงอย่างเดียว

ดังนั้นฉันจึงไปที่พวงกุญแจและลบมัน แต่ฉันได้รับข้อผิดพลาดนี้ทุกครั้งที่รีสตาร์ท Xcode 4 และแอพบางตัวกำลังเพิ่มใบรับรองเก่าที่หมดอายุแล้วกลับเข้าไปในพวงกุญแจ มีความคิดว่าทำไมและแอปใด


คำตอบ:


99

ฉันเพิ่งมีปัญหาเดียวกัน ได้รับการแก้ไขแล้ว มันเกิดขึ้นหลังจากที่ฉันส่งแอปและติดตั้งใบรับรองบางอย่างเพื่อลงนามแอป

การแก้ไขด่วน: เปิดการเข้าถึงแป้นพิมพ์> คลิกที่ใบรับรองของฉัน> ในนั้นคุณอาจเห็นนักพัฒนา iPhone: คุณอาจจะเห็นมัน TWICE! เลือกวันที่หมดอายุเร็วที่สุดคลิกขวาแล้วเลือก DELETE

รีสตาร์ท Xcode หากคุณยังไม่ได้ทำ ใช้งานได้แล้ว :)

Happy Coding.


27
อีกหนึ่งขั้นตอน! คุณต้องเปิด Organizer ใน XCode และรีเฟรชโปรไฟล์การจัดเตรียมของคุณหลังจากลบใบรับรองที่ซ้ำกัน
Meekohi

@ Meekohi คุณ 'รีเฟรช' โปรไฟล์การจัดเตรียมของฉันหมายความว่าอย่างไร ขอบคุณ!
abw333

7
การเปิดใช้งาน Xcode ใหม่ช่วยแก้ปัญหาเดียวกันให้กับฉันหลังจากที่ฉันลบใบรับรองเก่า
Maxim Mikheev

ใน Xcode 4 (ฉันมี 4.4.1) ฉันต้องลบโปรไฟล์การจัดเตรียมทั้งหมดที่เกี่ยวข้องกับใบรับรองเก่า จากนั้นฉันรีสตาร์ท Xcode และใบรับรองเก่าก็หยุดลง (อย่างน่าอัศจรรย์) ปรากฏบนพวงกุญแจ
Roberto

3
ทำงานให้ฉันด้วยการเพิ่มหนึ่งครั้ง (ฉันใช้ Xcode 4.6.3) ฉันลบใบรับรองที่หมดอายุ (หรือเร็วที่สุดที่จะหมดอายุ) จากนั้นรีสตาร์ท Xcode และฉันยังคงมีปัญหา - ใบรับรองเก่าปรากฏขึ้นอีกครั้งใน KeyChain Access ดังนั้นฉันจึงรีสตาร์ท Xcode แต่ก่อนที่ฉันจะเลือกโปรเจ็กต์เพื่อเปิดฉันกลับไปที่ KeyChain Access และใบรับรองเก่าอยู่ที่นั่นอีกครั้งฉันจึงลบมัน จากนั้นฉันก็เปิด projet ของฉัน (ใน Xcode ที่ทำงานอยู่แล้ว) และทุกอย่างก็เรียบร้อย - ฉันสามารถสร้างได้อีกครั้ง
Ed Sinek

71

ฉันคิดว่าฉันรู้แล้วว่าทำไมการลบแบบธรรมดาจึงไม่ทำงาน เนื่องจากใบรับรอง dev ยังคงถูกเก็บไว้ในโปรไฟล์การจัดเตรียมเมื่อฉันปิด / เปิด Xcode อีกครั้งหลังจากลบใบรับรองในพวงกุญแจฉันเห็นใบรับรองเก่ากลับมา ก็เลยลบอีกครั้ง มันได้ผล

วิธีแก้ปัญหาการลบโปรไฟล์อย่างง่ายไม่ได้ผลสำหรับฉัน

โซลูชันที่ใช้ได้ผลในกรณีของฉัน:

  1. ออกจาก Xcode
  2. หากการเข้าถึงพวงกุญแจเปิดอยู่ให้เปิดไว้
  3. เปิด Xcode ทันที
  4. ดูว่าใบรับรอง Xcode ถูกร้องเรียนจะถูกเพิ่มเข้าไปในพวงกุญแจอีกครั้งเมื่อเปิดใช้งานจากแคช
  5. ไปข้างหน้าและลบมัน
  6. รวบรวมและมีความสุขในการเขียนโค้ด

3
ฉันลองวิธีแก้ปัญหาข้างต้นทั้งหมดแล้วและวิธีนี้ก็ใช้เคล็ดลับได้ ดูเหมือนว่ามีหลายสาเหตุ / วิธีแก้ไข
Nathan Hangen

+1: ฉันสามารถยืนยันได้ว่า XCode เก็บ "แคช" ของใบรับรองไว้และเพิ่มในการเปิดตัว - มันแย่มากที่ใช้วิธีนี้! มันทำให้เกิดปัญหามากมาย! อัปยศกับคุณ Apple ทำให้เสียเวลาไปหลายชั่วโมงเนื่องจากการต่อสู้กับสิ่งนี้!
JRG-Developer

10

ฉันใช้เวลาพอสมควรในการต่อสู้กับปัญหาเดียวกันนี้ หลังจากพยายามแก้ไขทั้งหมดในที่สุดฉันก็รู้ว่ามันเป็นข้อบกพร่องใน Xcode โพสต์นี้ให้เบาะแสในการแก้ไข: ใบรับรองปรากฏในพวงกุญแจของคุณอย่างน่าอัศจรรย์

ในกรณีของฉันคีย์ส่วนตัวที่ตรงกันอยู่ในพวงกุญแจระบบและมีเพียงชื่อของฉันอยู่ (ยากที่จะบอกได้ว่าเป็นการจัดเตรียม) ฉันต้อง:

  • ย้ายคีย์ส่วนตัวที่เกี่ยวข้องไปที่พวงกุญแจ 'เข้าสู่ระบบ'
  • รีสตาร์ท Xcode และสังเกตว่าขณะนี้คีย์ส่วนตัวแสดงว่าเกี่ยวข้อง (ยืนยันว่ามีไว้เพื่ออะไร)
  • ลบใบรับรองและคีย์ส่วนตัว
  • รีสตาร์ท Xcode และ poof! มันหยุดเพิ่มใบรับรองเก่าของฉัน

ข้อสังเกตที่น่าสนใจคือเมื่อคุณลบใบรับรองจะไม่ลบคีย์ส่วนตัวที่เกี่ยวข้อง ในสายตาจะแสดงคีย์ส่วนตัวด้านล่างใบรับรอง อย่าหลงเชื่อ

โชคดี!


การลบคีย์ส่วนตัวก็ใช้งานได้สำหรับฉันเช่นกัน - xcode ล่าสุดอัปเดตตุลาคม 2012 สิงโตภูเขา
ina

4

โอเคพบคำตอบสำหรับคำถาม "เกี่ยวข้อง" อื่น ปัญหาใบรับรอง Xcode หมดอายุปัญหา ที่ทราบกับ Xcode 4 http://openradar.appspot.com/9173280


1
ฉันมีปัญหาเดียวกัน อย่างไรก็ตามฉันไม่เห็นคำตอบที่นี่หรือในหัวข้ออื่น ๆ คุณได้จัดการแก้ไขแล้วหรือยัง?
หน้าผา

4

หากคุณเป็นสมาชิกของโปรแกรม iOS Developer และ Enterprise iOS Developer และคุณป้อนชื่อ บริษัท ของคุณเหมือนกันสำหรับทั้งสองแอปพลิเคชันคุณจะได้รับใบรับรองการแจกจ่ายที่ถูกต้องสองใบที่มีชื่อเดียวกัน

ฉันเชื่อว่าคำถามนี้ตอบสนองสถานการณ์นั้น: การชนกันของ CodeSign ระหว่าง Developer และ Enterprise Distribution


3

ฉันมีปัญหาเดียวกันกับ xcode45-DP1 สิ่งนี้ใช้ได้กับฉัน:

  1. ลบใบรับรองทั้งหมดที่เกี่ยวข้องกับบัญชีของคุณออกจากพวงกุญแจ QUIT พวงกุญแจ

  2. ลบโปรไฟล์การจัดเตรียมทั้งหมดที่เกี่ยวข้องกับบัญชีของคุณออกจาก xcode: organizer: device: Library: การจัดเตรียมโปรไฟล์ ออกจาก xcode

  3. เพิกถอนใบรับรองของคุณและสร้างใหม่และดาวน์โหลดไปยังเครื่องสร้างของคุณ

  4. ก่อนดาวน์โหลดโปรไฟล์การจัดเตรียมให้คลิกที่แก้ไขถัดจากปุ่มดาวน์โหลดเพื่อให้แน่ใจว่าได้เลือกชื่อของคุณแล้ว

  5. จากนั้นดาวน์โหลดโปรไฟล์การจัดเตรียม

  6. ดับเบิลคลิกที่ใบรับรองเพื่อติดตั้งลงในพวงกุญแจ

  7. ลากโปรไฟล์การจัดเตรียมไปที่ xcode: organizer: device: Library: การจัดเตรียมโปรไฟล์

  8. อย่าคลิกปุ่มรีเฟรชจาก xcode

  9. สร้าง


3

คำตอบอยู่ที่นี่

ลบโปรไฟล์การจัดเตรียมเก่าทั้งหมดของฉันโดยใช้ใบรับรองเก่ากับ Organizer จากนั้นออกจาก XCode ลบใบรับรองเก่าออกจากพวงกุญแจและรีสตาร์ท XCode

ดูเหมือนว่า xcode จะเก็บใบรับรองไว้เมื่อคุณมีการอ้างอิงถึงในโปรไฟล์การจัดเตรียม


1

ฉันมีปัญหากับการเปลี่ยนใบรับรองซอมบี้ในพวงกุญแจของฉันและรหัสประจำตัวใบรับรองปรากฏขึ้นสองครั้ง เพียงแค่ลบใบรับรองที่ซ้ำกันไม่ได้ผล

ใน Xcode เมื่อฉันดู Code Signing ในเป้าหมายฉันจำได้ว่าฉันมีโปรไฟล์การแจกจ่ายในบิลด์ "Ad Hoc" ที่แตกต่างจากรุ่น "Release"

เมื่อฉันสร้างใบรับรองใหม่ฉันจะดาวน์โหลดเฉพาะโปรไฟล์ใหม่สำหรับรุ่น Ad Hoc เท่านั้นไม่ใช่สำหรับรุ่นที่วางจำหน่าย

Xcode แขวนอยู่บนใบรับรองสำหรับทั้งสองโปรไฟล์ดังนั้น Xcode จึงทำให้ใบรับรองซ้ำกัน ... เพราะฉันลืมอัปเดตโปรไฟล์ให้ถูกต้อง

อย่าลืมอัปเดตโปรไฟล์การจัดเตรียมทั้งหมดของคุณเป็นใบรับรองใหม่และเปลี่ยนโปรไฟล์ทั้งหมดพร้อมกันใน Xcode

อย่าลืมอัปเดตโปรไฟล์การจัดเตรียมทั้งหมดของคุณด้วยใบรับรองใหม่มิฉะนั้น Xcode จะพยายามใส่ใบรับรองสำหรับทั้งสองโปรไฟล์ในพวงกุญแจ ... ทำให้เกิดข้อผิดพลาดซ้ำ!


1

ฉันมีปัญหานี้และอ่านข้อมูลทุกชิ้นเกี่ยวกับเรื่องนี้ในที่สุดฉันก็พบวิธีแก้ปัญหาด้วยตัวเอง สิ่งที่ผู้คนล้มเหลวที่จะกล่าวถึงก็คือว่าก่อนที่จะทำความสะอาดใบรับรองใน Xcode จัดงานและก่อนที่จะทำความสะอาดคีย์หมดอายุในพวงกุญแจของคุณคุณจะต้องตรวจสอบให้แน่ใจว่าคุณไม่ได้มีใบรับรองหมดอายุใด ๆ ในการจัดเตรียมพอร์ทัล หากคุณมีใบรับรองที่หมดอายุแม้แต่ใบเดียวสำหรับแอปเก่าที่ใช้ Xcode ใบรับรองนักพัฒนาเก่าจะดึงสิ่งนั้นมาไว้ในตัวจัดระเบียบด้วยการสร้างครั้งแรกและจากที่นั่นจะไปที่พวงกุญแจของคุณและจะทำให้เกิดรายการซ้ำ


1

ในกรณีของฉัน Xcode "แคช" กำลังดูอยู่คืออุปกรณ์ iOS ที่เชื่อมต่อ เพื่อตรวจสอบว่านี่เป็นปัญหาสำหรับคุณหรือไม่:

  1. ยกเลิกการเชื่อมต่ออุปกรณ์ iOS ทั้งหมด
  2. ลบใบรับรองและคีย์ส่วนตัวที่ละเมิดออกจาก Keychain Access
  3. รีสตาร์ท Xcode
  4. ตรวจสอบการเข้าถึงพวงกุญแจ: ในกรณีของฉันสิ่งที่ซ้ำกันไม่ได้ถูกสร้างขึ้นใหม่ ณ จุดนี้
  5. เชื่อมต่ออุปกรณ์ iOS อีกครั้ง
  6. รีสตาร์ท Xcode อีกครั้ง
  7. ตรวจสอบการเข้าถึงพวงกุญแจ: ในกรณีของฉันสิ่งที่ซ้ำกันถูกสร้างขึ้นใหม่ ณ จุดนี้

หากนี่เป็นสาเหตุของคุณคุณสามารถสรุปได้โดยตรวจสอบให้แน่ใจว่าคุณได้ตัดการเชื่อมต่ออุปกรณ์ iOS ก่อนเริ่ม Xcode


0

การลบใบรับรองที่ซ้ำซ้อนไม่ได้ผลสำหรับฉัน ดูเหมือนว่าทุกครั้งที่เรียก xcodebuild มันคือ "สร้างใหม่" ใบรับรองในพวงกุญแจจากแคชที่ไหนสักแห่ง ... ปัญหาเดียวกับavi ที่ฉันสร้างแฮ็ค / แก้ไขสำหรับมันพยายามค้นหาว่าไฟล์ถูกแคชไว้ที่ไหน และเคลียร์ แต่ไม่มีโชค ในท้ายที่สุดสิ่งที่ได้ผลสำหรับฉัน (แฮ็คนิดหน่อย แต่เดี๋ยวก่อนคุณสามารถทำอะไรได้อีกบ้าง) คือการหาว่าหมายเลขใบรับรองคืออะไรและลบออกจากพวงกุญแจด้วยตนเองไม่นานหลังจากเรียก xcodebuild ขั้นแรกไปที่ไดเร็กทอรี / usr / bin / ของคุณ (หรือไดเร็กทอรีใดก็ตามที่มีไฟล์ xcodebuild ของคุณลองwhich xcodebuild) และรันคำสั่งต่อไปนี้:

sudo mv xcodebuild xcodebuild_actual

จากนั้นสร้างไฟล์โดยใช้โปรแกรมแก้ไขที่คุณชื่นชอบ (อย่าลืม sudo) ด้วยรหัสต่อไปนี้:

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

หมายเหตุ: คุณจะต้องแก้ไขไฟล์ sudoers ของคุณเพื่อให้สามารถเข้าถึงเพื่อเรียกใช้คำสั่งเฉพาะนี้โดยไม่ต้องป้อนรหัสผ่าน

แทนที่ข้อมูลประจำตัวฐานสิบหกหลังจาก -Z ด้านบนด้วยรหัสประจำตัวฐานสิบหกของใบรับรองซอมบี้ที่กระทำผิด สุดท้ายตรวจสอบให้แน่ใจว่าไฟล์ xcodebuild ทำงานได้:

sudo chmod 755 xcodebuild 

ตอนนี้คุณสามารถเปิดพวงกุญแจของคุณและเรียกใช้คำสั่ง build และดูว่าใบรับรองซอมบี้ที่กระทำผิดนั้นได้รับการคืนชีพอย่างไรจากนั้นจึงยิงปืนสั้น ๆ ก่อนที่มันจะกลายเป็นปัญหาในการเขียนโค้ด หวังว่า Apple จะแก้ไขปัญหานี้ได้จริง


0

ในกรณีของฉันการลบใบรับรองไม่ได้ผล XCode 4 ดูเหมือนจะแคชหรือกู้คืน เคล็ดลับที่ใช้ได้ผลสำหรับฉันในที่สุดก็คือให้พวงกุญแจและ xcode ทำงาน จากนั้นในพวงกุญแจลาก 2 ใบรับรองของฉัน (dev + dist) จาก 'เข้าสู่ระบบ' เป็น 'ระบบ' จากนั้นรายการที่ซ้ำกันก็ปรากฏขึ้นอีกครั้งอย่างน่าอัศจรรย์และฉันสามารถลบออกได้จากนั้นฉันลากใบรับรองกลับไปที่ 'เข้าสู่ระบบ'


0

ง่ายมากส่งออกใบรับรองที่ถูกต้องไปยังเดสก์ท็อปของคุณ ลบใบรับรองนั้นในพวงกุญแจ พยายามสร้างซอร์สที่มีข้อความแสดงข้อผิดพลาด (ไม่มีใบรับรอง .. ) จากนั้นนำเข้าใบรับรองอีกครั้ง => สำเร็จ!


0

ฉันเพิ่งลบคีย์ส่วนตัวหนึ่งคีย์ในพวงกุญแจของฉันสำหรับใบรับรองที่ฉันไม่ต้องการอีกต่อไป

แม้ว่าใบรับรองจะแสดงซ้ำ แต่คีย์ส่วนตัวจะไม่ปรากฏขึ้นอีก ตอนนี้ตรวจสอบใบรับรองที่ถูกต้องและจะมีเพียงใบรับรองเดียวเท่านั้นและใบรับรองอื่น ๆ ที่มีการลบคีย์ส่วนตัวจะไม่แสดงภายใต้ใบรับรองที่ถูกต้องอีกต่อไป

ฉันคิดว่านี่เป็นวิธีที่ง่ายที่สุดในการแก้ไขปัญหานี้


0

ฉันเคยเผชิญกับปัญหาเดียวกันมาแล้วครั้งหนึ่ง และฉันได้แก้ไขโดยลบโปรไฟล์การจัดเตรียมที่ไม่ได้ใช้ออกจากแท็บ Organizer ใน xcode พวงกุญแจจะได้รับใบรับรองนั้นจากโปรไฟล์การจัดเตรียมนี้ซึ่งอาจเป็นใบรับรองที่หมดอายุหรือสร้างโดยใบรับรองที่ถูกเพิกถอน

ดังนั้นคุณต้องลบโปรไฟล์การจัดเตรียมนี้ออกจากแท็บ Organizer Organizer อยู่ที่ปุ่มด้านขวาบนของ xcode เปิดและกว่าใน Organizer จะลบโปรไฟล์การจัดเตรียมที่คุณไม่ได้ใช้

นี่คือภาพหน้าจอ

ป้อนคำอธิบายภาพที่นี่

และอย่าลืมลบใบรับรองพิเศษออกจากพวงกุญแจ แต่หลังจากนั้นใบรับรองเหล่านั้นจะไม่ปรากฏขึ้นอีก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.