Xcode 명령 / usr / bin / codesign이 종료 코드 1과 함께 실패했습니다. errSecInternalComponent


105

장치에서 앱을 테스트하기 위해 Xcode에 새 프로비저닝 프로파일을 추가하려고합니다. 내가 따랐던 단계는 다음과 같습니다.

  1. 모든 인증서 및 프로비저닝 프로파일을 삭제했습니다.

  2. IOS 개발 인증서 생성 / 추가

  3. 온라인으로 내 IOS 장치 추가

  4. IOS 프로비저닝 프로파일 생성

  5. IOS 프로비저닝 프로필 추가

  6. 깨끗한 앱

  7. 앱 빌드 후 실행

  8. 빌드 설정에서 공동 설계 및 프로비저닝 프로파일 설정

  9. 많은 인터넷 검색> 성공하지 못함

내가 얻는 오류는 다음과 같습니다.

CSSM_SignData returned: 800108E6
/Users/alexpelletier/Library/Developer/Xcode/DerivedData/MyExpense-efnqzvoqwngzcmazaotyalepiice/Build/Products/Debug-iphoneos/MyExpense.app:     errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1

1
이 오류는 프로비저닝 프로파일 설정과 인증서 및 번들 ID의 불일치로 인해 발생합니다. PP, 번들 ID 및 인증서가 iTunes 연결 및 앱에서 올바르게 설정되고 올바르게 할당되었는지 확인하십시오.
Alex Pelletier

1
내가 만든 프레임 워크의 코드 서명 중에 Xcode 11.2.1에서 11.3으로이 문제가 발생했습니다. 프로비저닝 프로파일이 관련되지 않았습니다. Mohit Manhas의 대답은 그것을 정리했습니다.
Daniel Zhang

이는 SSH를 사용 중이고 코드 사인이 키 체인의 개인 키에 액세스 할 수없는 경우에 발생합니다. 이를 확인하려면 키 체인에서 키를 찾아 마우스 오른쪽 단추로 클릭하고 "정보 가져 오기"를 선택하고 "접근 제어"로 전환 한 다음 "공동 디자인"앱이 "항상 접근 허용"목록에 있는지 확인합니다. 이 주석을 보십시오 github.com/electron-userland/electron-builder/issues/… 제가 한 일은 GUI에서 스크립트를 한 번 실행하고 키 액세스를 위해 "항상 허용"을 클릭 한 다음 작동하기 시작했습니다.
ArticIceJuice

답변:


240

열기 키 체인 접근은 다음에 파일 메뉴를 선택 잠금 모든 열쇠 고리를 .

그런 다음 Xcode로 돌아가서 정리하고 다시 빌드하십시오. 키 체인을 잠금 해제하기 위해 암호를 다시 입력하라는 메시지가 표시됩니다.

그 후에 다른 컴파일 문제가 없다고 가정하면 성공할 것입니다!


7
이 어리석은 잠금 및 잠금 해제가 도움이된다는 것이 믿기지 않습니다! 감사합니다
Josip B.

8
이것은 받아 들여진 대답이어야합니다. 재부팅보다 훨씬 더 제정신입니다!
yonix

3
나를 위해 일했습니다. Android 용 APK 30 초, iOS 용 앱 빌드 .. 2hs.
Gabe

1
진심으로 WTF ?! 감사!
Peter N Lewis

1
@FredericP 저는 최근에 비밀번호를 변경했습니다. 따라서 키 체인이 xcode에 의해 마지막으로 잠금 해제 된 시간과이를 위해 사용 된 암호 사이에 약간의 상호 작용이있었습니다.
sherrellbc

77

코드 서명 메커니즘의 버그 인 것 같습니다. Mac을 다시 시작하면 문제가 해결됩니다.


다른 경우이지만 유사한 오류 메시지-다시 시작이 작동했습니다.
mikus

거의 4 년이 지난 후에도 여전히 작동합니다! 황금률을 잊었습니다. "의심스러운 경우 재부팅하십시오!"
Alan

2
있는 거 대기 덜 파괴적인 솔루션이 경우, 아래 Mohit Manhas의 답변을 참조
yonix

도와주지 않았다
Anoop Vaidya

70

로그인 키 체인이 잠겨있을 때 발생합니다. 로그인 키 체인을 잠금 해제하려면 다음을 실행하십시오.

security unlock-keychain login.keychain

키 체인이 암호로 보호 된 경우 -p옵션을 사용하여 암호를 지정하십시오 .

그런 다음 빌드 또는 코드 서명 작업을 다시 시도하십시오. 문제의 오류 코드는 Apple 문서 에 내부 오류로 설명되어 있으므로 다른 경우에도 발생할 수 있습니다.


1
안타깝게도이 솔루션은 완전히 순환 적으로 보입니다. 위의 명령을 실행하려면 암호를 입력해야합니다. 이는 분명히 비대화 형 세션 (Jenkins와 같은 CI 에이전트를 통해 실행할 때와 같이)에서 절대로 진행할 수 없습니다.
Konrad Rudolph

좋은 점입니다. 말씀 하셨듯이 CI 봇과 같은 비대화 형 세션에는 적합하지 않습니다. 명령 줄 세션 (예 : ssh를 통해)에서 원격 빌드를 실행할 때 유용합니다.
cbracken 19.01.16

3
Jenkins에서 비슷한 문제가 발생했습니다. 위 명령에서 언급 한 것 외에도 명령에 대한 인수로 암호를 전달해야하므로 "security unlock-keychain -p $ KeychainPassword <login-keychain>"을 수행했습니다. Jenkins에 KeychainPaasword를 안전하게 안전하게 저장할 수 있습니다.
Mohit Tater 19 년

1
이 게시물에 대해 충분히 감사 할 수 없습니다. 나는 왜 codesign실패 했는지 알아 내기 위해 며칠을 보냈다. 그리고 이것이 나를 구한 마법의 명령이다 !!!
Dimu4

32

High Sierra/ 에서 동일한 문제가 발생하여 Xcode 9.4.1모든 로그인 시도가 종료되었습니다.errSecInternalComponent

    • 키 체인 접근으로 이동
    • 로그인 키 체인으로 이동
    • "내 인증서"카테고리를 선택하십시오.
    • 서명 할 인증서를 찾아 확장하여 키를 확인합니다.
    • 키를 두 번 클릭하십시오.
    • "액세스 제어"탭으로 이동합니다.
    • 키 액세스 제어를 "모든 애플리케이션이이 항목에 액세스하도록 허용"으로 업데이트하십시오.

또는 :

mac 터미널에서 codesign 명령을 실행하고 키에 대한 / usr / bin / codesign 액세스를 "항상 허용"합니다.

  1. ssh / CI에서 서명을 시도하는 경우 다음을 실행해야합니다.

    security unlock-keychain login.keychain

    App Bundle에 서명하기 전에


? 당신은 "모든 응용 프로그램이이 항목에 액세스 할 수 있도록 허용"에 업데이트 키 액세스 제어 "에 정교한 나는 아무 생각도 그 무엇도 의미가 없다.
존 McClung

2
@JonMcClung 키 체인 액세스를 열고 로그인 키 체인으로 이동-내 인증서. 서명 할 인증서를 찾아 확장하여 키를 확인합니다. 키를 두 번 클릭하면 "액세스 제어"탭이 표시됩니다. 허용하도록 전환
Equilibrium

5
security unlock-keychain -p <password> login.keychainCI의 @KonradRudolph .
Equilibrium

1
@KonradRudolph 코드 사인이 개인 키에 액세스하도록 허용 한 경우 보안 잠금 해제 키 체인에 대한 암호를 제공 할 필요가 없습니다. 빈 문자열을 암호로 남겨두면 충분합니다.
Kamil Szostakowski

1
아마 적합하지 여전히 @KonradRudolph하지만 해당 잠금 해제 명령을 움직일 수 ~/.bash_profileSSH 클라이언트 시작시 키 체인 잠금 해제하지만 당신은 당신의 CI 스크립트에서 참조가 필요하지 않도록
sschilli

17

같은 문제가 발생하여 macOS를 다시 시작하면 작동합니다.

중국에서는 개발자들 사이에 다음과 같은 말이 있습니다.

작은 문제는 다시 시작하십시오. 큰 문제는 다시 설치해야합니다.

때로는 위의 말이 큰 도움이 될 것입니다!


7
우리는 미국에서 말을했다 - '기존의 하드웨어를 재부팅하지 마십시오'
브랜트

@Brant 왜이 말이 있습니까? 흥미 롭군.
ifeegoo

농담입니다.하지만 비슷한 문제가 생겼고 마침내 이전 서버를 재부팅했습니다.
브랜트

1
@ifeegoo 오래된 서버는 백업을 부팅하는 데 문제가있을 수 있습니다 (OS가 자체적으로 업데이트 되었습니까? 누군가가 부팅 스크립트를 깨 뜨렸을 수 있습니까?). 사용 가능한 사람이 모르는 수동 시작 절차가 필요할 수 있습니다. 시도하기 전에는 알 수 없습니다. 바이오스 롬이 나빠졌을 수도 있습니다. 제대로 관리 된 환경에서 문제가되지 않아야하는 것 중 하나 일 뿐이지 만 시도하기 전에 실제로 알지 못하고 시도하지 않을 것입니다.
Lassi Kinnunen

1
@LassiKinnunen 맞아요, 우리는 Android 및 iOS 용 모바일 개발자이므로 이런 종류의 상황은 서버에 대해 신경 쓰지 않습니다. 서버는 정말 위험하고 상황에 맞지 않습니다.
ifeegoo

8

다른 사람에게 도움 이되는 경우 내 macOS 컴퓨터에 대한 ssh 세션을 통해 실행했기 때문에 errSecInternalComponent오류 가 발생했습니다 codesign. macOS 컴퓨터 자체의 터미널 창에서 동일한 명령을 실행하면 작동했습니다.

아마도 이것은 codesign로그인 키 체인에서 개인 키에 액세스해야 하기 때문일 것입니다.

동일한 세션에서 실행 security unlock-keychain login.keychain( cbracken의 답변에 설명 됨 )도 작동해야합니다.


이것은 매우 이상합니다. 키 체인 잠금 해제 명령을 실행해도 코드 서명이 여전히 작동하지 않기 때문에 조용히 실패하는 것 같습니다. 그러나 SSH 대신 원격 데스크톱을 사용하여 동일한 명령을 실행하면 정상적으로 작동합니다.
최대

2

ssh 실행 명령에서 서명하려는 경우 :

security unlock-keychain login.keychain

App Bundle에 서명하기 전에

또는 UI에서

키 액세스 제어를 "모든 애플리케이션이이 항목에 액세스하도록 허용"으로 업데이트하십시오.

Thx에서 @Equilibrium 및 @Jon McClung으로


2

나는 같은 문제가 있었다. 문제가 앱에 서명하는 코드에 있다는 것을 알았다.

Opened the developer account and accepted the updated agreement and it worked.  

여기에 이미지 설명 입력


2

실행했는데 security unlock-keychain login.keychain로그인 암호가 작동하지 않았습니다. 그래서 재부팅 한 다음 Xcode를 다시 실행했는데 작동했습니다. 명령 실행도 작동합니다. 이상한 문제.


2

@Equilibrium이 주석 중 하나에서 지적했듯이 명령 줄에있는 경우 env. Jenkins (제 경우) 와 같이 솔루션에 언급 된 security-unlock 명령에 암호를 전달해야 할 수도 있습니다 .

따라서 사용하는 대신

security unlock-keychain login.keychain

사용하다:

security unlock-keychain -p <login-keychain-password> <path-to-login-keychain>

여기서 로그인 경로 키 체인은 $ HOME / Library / Keychains / login.keychain (내 경우) 또는 단순히 login.keychain 일 수 있습니다.


당신의 대답은 @equilibrium 대답을 기반으로하지만 나는 그것을 생각할 것입니다. 에 대나무 CI 나에게 도움이 명령 보안 잠금 해제 - 키 체인 -p {계정 암호} login.keychain
A.Kant

2

jenkins 및 ssh 에서이 문제가 발생한 모든 사람 :

키 체인의 개인 키에 대한 액세스 권한을 부여하지 않았을 가능성이 높습니다. 시도했지만이 모든 항목이 작동하지 않는 이유는 확실하지 않습니다.

  1. -A 또는 -T / usr / bin / codesign을 사용하여 보안 가져 오기 .p12 파일
  2. 보안 설정 키 파티션 목록 -S apple-tool :, apple :, codesign : -s -k # {password} # {keychainPath}
  3. 모든 프로비저닝 프로파일을 [UUID] .mobileprovision으로 변경하고 젠킨스 서버의 '~ / Library / MobileDevice / Provisioning \ Profiles'에 복사합니다.
  4. 파생 데이터 정리 및 젠킨스 서버 재부팅
  5. 기본 키 체인이 로그인 키 체인인지 확인하고 잠금을 해제합니다.

마지막으로 해결 :

1.ssh [user] @ [jenkinsServerIP] -L 5900 : localhost : 5900, jenkins 서버에 로그인

2. 'vnc : // localhost'를 엽니 다.

젠킨스 서버가 이것을 허용하면 원격 화면이 시작됩니다 ...

그런 다음 keychain.app을 열어 / usr / bin / codesign의 액세스 권한을 개인 키에 부여합니다.

행운을 빕니다


1

mac 터미널을 사용하여 한 번 시도하지만 ssh 세션에서는 시도하지 마십시오.

security unlock-keychain login.keychain

그리고 프롬프트 된 대화 상자에서 항상 허용을 선택하십시오. 그런 다음 원격 세션에서 xcodebuild를 수행 할 수 있습니다.


1

키 체인에서 코드 서명 인증서와 관련된 개인 키를 마우스 오른쪽 버튼으로 클릭 한 다음 프롬프트에 의존하는 대신 '모든 애플리케이션 허용'을 클릭하면 빌드가 ssh를 통해 발생했기 때문에 문제가 해결되었습니다.


0

나는 :

1) 프로젝트와 관련된 인증서 삭제

2) Xcode로 돌아가서 앱 인증서를 취소합니다.

3) Xcode에는 새 인증서가 필요합니다.

4) 모든 키 체인 잠금

5) 프로젝트 청소

6) 재 구축

그게 다야. 누구에게나 도움이되기를 바랍니다.


0

위의 방법은 나에게 쓸모가 없습니다.

나는 그것을 다음과 같이 해결했다.

  1. 키 체인 접근을 엽니 다.
  2. 로그인 메뉴를 클릭합니다.
  3. 모든 개인 인증서를 제거하십시오.
  4. 프로젝트를 청소하십시오.
  5. 재건.

그게 다야. 누구에게나 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.