Lỗi thiết kế mã: Nhận dạng chứng chỉ xuất hiện hai lần


103

Lỗi CodeSign: Nhận dạng chứng chỉ 'Nhà phát triển iPhone: XXXX (12345678)' xuất hiện nhiều lần trong chuỗi khóa. Công cụ thiết kế mã yêu cầu chỉ có một.

Vì vậy, tôi đi đến chuỗi khóa của mình và xóa nó. Nhưng tôi gặp lỗi này mỗi khi khởi động lại Xcode 4 và một số ứng dụng đang thêm lại chứng chỉ cũ đã hết hạn vào chuỗi khóa. Bất kỳ ý tưởng tại sao và ứng dụng nào?


Câu trả lời:


99

tôi chỉ có cùng một vấn đề. Nó đã được sửa. Nó đến sau khi tôi gửi một ứng dụng và cài đặt một vài chứng chỉ để ký ứng dụng.

Khắc phục nhanh: Mở KEYCHAIN ​​ACCESS> nhấp vào CHỨNG NHẬN CỦA TÔI> trong đó, bạn có thể sẽ thấy Nhà phát triển iPhone :. Bạn có thể sẽ thấy nó TWICE! Chọn một trong những có Ngày hết hạn sớm nhất, nhấp chuột phải và chọn XÓA.

Khởi động lại Xcode nếu bạn chưa có. Hoạt động ngay bây giờ. :)

Chúc bạn mã hóa vui vẻ.


27
Thêm một bước! Bạn cần mở Trình tổ chức trong XCode và làm mới hồ sơ cấp phép của mình sau khi xóa chứng chỉ trùng lặp.
Meekohi

@Meekohi Ý bạn là gì khi 'làm mới' hồ sơ cấp phép của tôi? cảm ơn!
abw333

7
Khởi chạy lại Xcode đã giải quyết được vấn đề tương tự cho tôi sau khi tôi xóa chứng chỉ cũ.
Maxim Mikheev

Trên Xcode 4 (tôi có 4.4.1), tôi đã phải xóa TẤT CẢ các cấu hình cấp phép được liên kết với chứng chỉ cũ. Sau đó, tôi khởi động lại Xcode và chứng chỉ cũ ngừng xuất hiện (một cách kỳ diệu) trên Chuỗi khóa.
Roberto

3
Làm việc cho tôi với một bổ sung (tôi đang sử dụng Xcode 4.6.3). Tôi đã xóa các chứng chỉ đã hết hạn (hoặc sớm nhất là hết hạn), sau đó khởi động lại Xcode và tôi vẫn gặp sự cố - các chứng chỉ cũ bằng cách nào đó đã xuất hiện lại trong KeyChain Access. Vì vậy, tôi đã khởi động lại Xcode nhưng trước khi tôi chọn dự án của mình để mở, tôi đã quay lại KeyChain Access và chứng chỉ cũ lại ở đó, vì vậy tôi đã xóa nó. Sau đó, tôi mở projet của mình (trong Xcode đã chạy) và tất cả đều ổn - tôi đã có thể xây dựng lại.
Ed Sinek

71

Tôi nghĩ rằng tôi đã tìm ra lý do tại sao xóa đơn giản không hoạt động. Vì chứng chỉ nhà phát triển vẫn được lưu trữ trong hồ sơ cung cấp nên khi tôi đóng / mở lại Xcode sau khi xóa chứng chỉ trong Keychain, tôi thấy chứng chỉ cũ quay trở lại. Vì vậy, tôi xóa nó một lần nữa. Nó đã làm việc.

Giải pháp xóa hồ sơ đơn giản không hoạt động với tôi.

Giải pháp đã hoạt động trong trường hợp của tôi:

  1. Thoát Xcode
  2. Nếu quyền truy cập Chuỗi khóa đang mở, hãy tiếp tục mở.
  3. Khởi chạy Xcode ngay bây giờ.
  4. Hãy xem chứng chỉ mà Xcode phàn nàn sẽ được thêm lại vào chuỗi khóa khi khởi chạy từ bộ nhớ cache của nó.
  5. Hãy tiếp tục và xóa nó.
  6. Biên dịch và mã hóa vui vẻ.

3
Tôi đã thử tất cả các giải pháp trên và giải pháp này đã thực hiện thành công. Có vẻ như có nhiều nguyên nhân / giải pháp.
Nathan Hangen

+1: Tôi có thể xác nhận rằng XCode thực sự giữ "bộ nhớ cache" của các chứng chỉ và thêm chúng vào khi ra mắt-- thật khủng khiếp khi nó hoạt động theo cách này! Nó gây ra rất nhiều vấn đề! Thật xấu hổ cho bạn Apple, điều này đã gây mất thời gian hàng giờ do chiến đấu với điều này!
JRG-Developer

10

Tôi vừa dành một khoảng thời gian kha khá để đấu tranh với vấn đề tương tự. Sau tất cả những nỗ lực để sửa chữa nó, cuối cùng tôi nhận ra rằng đó là một lỗi trong Xcode. Bài đăng này đã cho tôi một manh mối để sửa nó: các chứng chỉ xuất hiện một cách kỳ diệu trong chuỗi khóa của bạn

Trong trường hợp của tôi, khóa cá nhân phù hợp nằm trong chuỗi khóa Hệ thống và chỉ có tên tôi trên đó (khó có thể biết đó là khóa cấp phép). Tôi phải:

  • Di chuyển khóa cá nhân được liên kết sang chuỗi khóa 'đăng nhập'
  • Khởi động lại Xcode và nhận thấy rằng khóa cá nhân hiện đang hiển thị dưới dạng được liên kết (xác nhận nó dùng để làm gì)
  • Xóa chứng chỉ và khóa riêng tư
  • Khởi động lại Xcode và poof! Nó đã ngừng thêm chứng chỉ cũ của tôi

Một quan sát thú vị là khi bạn xóa chứng chỉ, nó sẽ không xóa khóa cá nhân được liên kết. Trực quan, nó hiển thị khóa riêng tư bên dưới chứng chỉ. Đừng để bị lừa.

Chúc may mắn!


xóa các khóa bí mật làm việc cho tôi quá - mới nhất xcode Tháng 10 năm 2012 cập nhật sư tử núi
ina



3

Tôi gặp vấn đề tương tự với xcode45-DP1. cái này phù hợp với tôi:

  1. xóa tất cả các chứng chỉ liên quan đến tài khoản của bạn khỏi chuỗi khóa. Móc khóa QUIT

  2. xóa tất cả các cấu hình cấp phép liên quan đến tài khoản của bạn khỏi xcode: Organier: device: Library: các cấu hình cấp phép. QUIT xcode

  3. thu hồi chứng chỉ của bạn và tạo lại và tải nó xuống máy xây dựng của bạn

  4. trước khi tải xuống hồ sơ cấp phép, hãy nhấp vào Chỉnh sửa bên cạnh nút tải xuống để đảm bảo tên của bạn được chọn.

  5. Sau đó, tải xuống hồ sơ cấp phép

  6. nhấp đúp vào chứng chỉ để cài đặt nó vào chuỗi khóa

  7. kéo cấu hình cấp phép vào xcode: Organier: device: Library: các cấu hình cấp phép

  8. không nhấp vào nút làm mới từ xcode.

  9. xây dựng.


3

Câu trả lời là ở đây

xóa tất cả hồ sơ cấp phép cũ của tôi bằng chứng chỉ cũ với Organizer, sau đó thoát XCode, xóa chứng chỉ cũ khỏi Keychain và khởi động lại XCode.

có vẻ như xcode sẽ giữ các chứng chỉ xung quanh khi bạn có tham chiếu đến trong hồ sơ cấp phép


1

Tôi đã gặp sự cố với việc các chứng chỉ zombie được đưa vào chuỗi khóa của mình và danh tính chứng chỉ xuất hiện hai lần. Chỉ xóa chứng chỉ trùng lặp không hoạt động.

Trong Xcode, khi tôi xem phần Đăng nhập mã của mình trong mục tiêu, tôi nhớ rằng mình có một cấu hình phân phối trong các bản dựng "Ad Hoc" khác với các bản dựng "Phát hành".

Khi tạo chứng chỉ mới, tôi chỉ tải xuống cấu hình mới cho các bản dựng Ad Hoc chứ không phải cho các bản phát hành.

Xcode bị treo vào chứng chỉ cho cả hai cấu hình đó và Xcode do đó đã gây ra các chứng chỉ trùng lặp ... bởi vì tôi quên cập nhật cấu hình của mình đúng cách.

Đảm bảo cập nhật TẤT CẢ các cấu hình cấp phép của bạn lên chứng chỉ mới và thay đổi TẤT CẢ các cấu hình cùng một lúc trong Xcode.

Đảm bảo cập nhật tất cả các cấu hình cấp phép của bạn bằng chứng chỉ mới, nếu không Xcode sẽ cố gắng đặt chứng chỉ cho CẢ HAI cấu hình trong chuỗi khóa ... gây ra lỗi trùng lặp!


1

Tôi đã gặp vấn đề này và đọc mọi thông tin về nó, cuối cùng tôi đã tìm ra giải pháp cho riêng mình. Những gì mọi người không đề cập đến là TRƯỚC KHI làm sạch chứng chỉ trong trình tổ chức Xcode và TRƯỚC KHI làm sạch các khóa hết hạn trong chuỗi khóa của bạn, bạn cần đảm bảo rằng bạn không có bất kỳ chứng chỉ hết hạn nào trong Cổng cấp phép . Nếu bạn thậm chí có một chứng chỉ đã hết hạn cho một ứng dụng cũ đã sử dụng chứng chỉ Nhà phát triển cũ, Xcode sẽ kéo chứng chỉ đó vào trình tổ chức của nó với bản dựng đầu tiên và từ đó nó sẽ đi đến chuỗi khóa của bạn và sẽ gây ra bản sao.


1

Trong trường hợp của tôi, Xcode "bộ nhớ cache" đang xem xét là một thiết bị iOS được đính kèm. Để xác định xem đây có phải là vấn đề đối với bạn hay không:

  1. Ngắt kết nối tất cả các thiết bị iOS
  2. Xóa chứng chỉ vi phạm và khóa cá nhân khỏi Truy cập chuỗi khóa
  3. Khởi động lại Xcode
  4. Kiểm tra Quyền truy cập chuỗi khóa: trong trường hợp của tôi, bản sao KHÔNG được tạo lại vào thời điểm này
  5. Kết nối lại thiết bị iOS
  6. Khởi động lại Xcode một lần nữa
  7. Kiểm tra Quyền truy cập chuỗi khóa: trong trường hợp của tôi, bản sao đã được tạo lại tại thời điểm này

Nếu đây là nguyên nhân gốc rễ của bạn, bạn có thể khắc phục bằng cách đảm bảo rằng bạn ngắt kết nối các thiết bị iOS trước khi khởi động Xcode.


0

Tôi chỉ đơn giản xóa chứng chỉ thừa không hiệu quả. Có vẻ như mỗi khi xcodebuild được gọi, nó đang "Tạo lại" chứng chỉ trong chuỗi khóa từ bộ nhớ cache ở đâu đó ... vấn đề tương tự như avi Tôi đã tạo một bản hack / sửa lỗi cho nó, đã cố gắng tìm nơi tệp được lưu vào bộ nhớ cache và xóa nó, nhưng không may mắn. Cuối cùng, điều làm việc với tôi (hơi khó, nhưng này, bạn có thể làm gì khác), là tìm ra số chứng chỉ là gì và xóa thủ công nó khỏi chuỗi khóa ngay sau khi xcodebuild được gọi. Trước tiên, hãy truy cập thư mục / usr / bin / của bạn (hoặc bất kỳ thư mục nào có tệp xcodebuild của bạn, hãy thử which xcodebuild) và chạy lệnh sau:

sudo mv xcodebuild xcodebuild_actual

Sau đó, tạo một tệp bằng trình chỉnh sửa yêu thích của bạn (đừng quên sudo) với mã sau:

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

Lưu ý: bạn sẽ phải sửa đổi tệp sudoers của mình để có quyền truy cập chạy lệnh cụ thể này mà không cần phải nhập mật khẩu.

Thay thế danh tính hex sau -Z ở trên bằng danh tính hex của chứng chỉ zombie vi phạm. Cuối cùng, hãy đảm bảo rằng tệp xcodebuild có thể thực thi được:

sudo chmod 755 xcodebuild 

Giờ đây, bạn có thể mở chuỗi khóa của mình và chạy lệnh xây dựng, đồng thời xem chứng chỉ zombie vi phạm được hồi sinh như thế nào và sau đó bị bắn nhanh trước khi nó trở thành vấn đề đối với việc thiết kế mã. Hy vọng rằng Apple sẽ đưa ra một bản sửa lỗi thực sự cho điều này.


0

Trong trường hợp của tôi, việc xóa chứng chỉ không hoạt động. XCode 4 dường như sẽ lưu vào bộ nhớ cache hoặc khôi phục chúng. Mẹo cuối cùng đã hiệu quả với tôi là chạy keychain và xcode. Sau đó, trong chuỗi khóa, kéo 2 chứng chỉ của tôi (dev + dist) từ 'đăng nhập' sang 'hệ thống'. Sau đó, các bản sao xuất hiện lại một cách kỳ diệu và tôi có thể xóa chúng và sau đó tôi kéo các chứng chỉ trở lại 'đăng nhập'


0

Rất dễ dàng, hãy xuất Chứng chỉ chính xác sang máy tính của bạn. Xóa Chứng chỉ đó trong chuỗi khóa. Cố gắng tạo nguồn với thông báo lỗi (không có chứng chỉ ..) Sau đó nhập lại chứng chỉ. => Thành công!


0

Tôi vừa xóa một trong các khóa cá nhân trong chuỗi khóa của mình để lấy chứng chỉ mà tôi không cần nữa.

Mặc dù chứng chỉ ứng dụng lại nhưng khóa riêng tư không xuất hiện lại. Bây giờ, hãy kiểm tra các chứng chỉ hợp lệ và chỉ một chứng chỉ sẽ xuất hiện và các chứng chỉ khác có khóa riêng bị xóa sẽ không còn hiển thị trong các chứng chỉ hợp lệ.

Tôi nghĩ rằng đây là cách đơn giản nhất để giải quyết vấn đề này.


0

Tôi đã đối phó với cùng một vấn đề một lần. Và tôi đã giải quyết nó bằng cách xóa hồ sơ cấp phép không sử dụng khỏi tab Organizer trong xcode. Trên thực tế Keychain sẽ lấy chứng chỉ đó từ hồ sơ cấp phép này là chứng chỉ đã hết hạn hoặc được xây dựng theo chứng chỉ bị thu hồi.

Vì vậy, bạn chỉ cần xóa hồ sơ cấp phép này khỏi tab Organizer. Organizer nằm trên nút phía trên bên phải của xcode Mở nó và trong Organizer, hãy xóa các cấu hình cấp phép mà bạn không sử dụng.

Đây là ảnh chụp màn hình,

nhập mô tả hình ảnh ở đây

Và đừng quên xóa chứng chỉ thừa khỏi chuỗi khóa nhưng sau đó chứng chỉ đó không xuất hiện nữa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.