React-Native/iOS

[Fastlane iOS error ] No signing certificate "iOS Distribution" found / 인증서 에러

버그매니저 2020. 11. 20. 19:27

 

에러발생

 

 

No signing certificate "iOS Distribution" found error

 

No signing certificate "iOS Distribution" found 에러가 났다. 필자의 경우는 React-Native에서 자동 배포 툴인 fastlane을 iOS에서 적용해서 사용 중인데 최근 라이브러리 업데이트 및 mac OS Big Sur 업데이트, xcode 업데이트를 하면서 한번 인증서 문제가 난 적이 있어서 어찌저찌 해결했는데 fastlane 배포 테스트를 하는 도중 저 에러가 났다. distribution에서 적용이 잘 안되었나 보다.

 

 

 

'Looks like no provisioning profile mapping was provided'

혹시나해서 한번 더 fastlane으로 다시 배포 시도해보았으나 Archive는 성공했지만 App Store에 업로드 하는 과정에서 인증서가 꼬인 것 같다. 애플 인증서 시스템 너무 싫다......

 

에러원인 확인

Xcode Organizer

 

일단 Archive는 됐으니 Xcode 메뉴 툴바 > Window > Orginizer 에 들어가면 Archive된 빌드를 확인할 수 있다.

 

 

 

App의 유효성을 검사하기 위해 Validate App 버튼을 누른다. (보통 앱 스토어로 업로드시 인증서가 꼬일 경우 저걸로 체크해보면 에러가 표시됨)

 

 

 

App Store Connect > Next 클릭

 

 

 

Upload > Next 클릭

 

 

 

Next 클릭

 

 

 

Validation후 뭐가 문제인지 위와 같은 에러가 나온다. Missing private key가 원인. you app has 3 Apple Distribution certifications but their private keys are not installed. Contact the creator of one of there certificates to get a copy of the private key. 왜 인지는 모르겠는데 인증서가 3개나 있음 ( 뭐 설정하다가 추가가 된듯하다... ) 근데 private key가 없다. 보통 certificate안에는 public key와 private key가 쌍으로 같이 들어있는 걸로 알고 있는데 왜 private key가 누실되었을까..?

 

저 화면 하단에 'Manage Certificates'버튼을 누르면 유효한 iOS distribution이 있는 경우 generate 해주면 해결 되는데 내꺼는 다 유효하지 않아서 되지도 않았음.

 

 

 

 

Apple Certifications, Identifiers & Profiles

 

Apple Developer 웹사이트에 접속해서 Account > Certifications, Identifiers & Profiles 내의 내 인증서를 확인해본다. 그리고 혹시나해서 Download해서 더블클릭해서 실행시켜보았다.

 

 

 

이런저런 인증서가 있는데 여튼 인증서에 개인키가 있는 경우 열쇠모양으로 하위에 추가가 되어있는데, 이 인증서에는 그게 안보였다. 개인키를 어떻게 따로 가져올까? .p8이랑 .p12파일도 예전에 백업 되어있던 게 있던데 이걸로 될려나 이것저것 해봤는데 잘 안되었다. 

 

구글링을 해보니 그냥 그 해당 인증서를 "Revoke"시키고 인증서를 재발급 받는게 정신건강에 이로운 듯 하다. 재발급 받는다고 해서 인증서만 잘 갱신되면 앱 배포에 큰 영향은 없다고 한다.

 

인증서 생성하기

 

 

자, 일단 새로운 Certificate를 발급받기 위한 CSR(CertificateSigningRequest)파일이 필요하니 그거부터 만들어보자. 키체인 접근에 들어가면 키체인 접근 > 인증서 지원 > 인증 기관에서 인증서 요청을 누른다.

 

 

 

위와 같은 화면이 뜨고 디스크에 CSR 파일을 잘 저장해둔다.

 

 

 

나는 찾기 쉽게 일단 다운로드 폴더에 저장했지만 차후 인증용 폴더에 보관을 해야겠다.

 

 

 

기존에 사용하던 iOS Distribution을 Revoke 시키고 위에 'Certificates +' 버튼을 눌러 인증서를 생성한다.

 

 

 

앱 배포용이므로 iOS Distribution (App Store and Ad Hoc)를 선택하고 'Continue'를 누른다.

 

 

 

아까 다운로드 해놓았던 CSR 파일을 업로드 하고 'Continue'를 하면 확장자가 .cer로 된 인증서 파일이 보이며 Download 하고 실행시켜준다.

 

 

 

오, 드디어 개인 키가 포함된 Distribution이 생성된 걸 볼 수 있었다.

 

 

아까 Xcode에 Organizer에서 다시 Validate App을 눌러 같은 에러가 뜬 부분에서 'Manage Certificates'를 누른다.

 

 

 

위 화면과 같이 유효한 Apple Distribution이 떠있는 걸 확인할 수 있다. "Done" 버튼을 누른다.

 

 

 

이 화면이 뜨고나면 iOS Distribution이 generate되고 드디어 ipa가 validation이 완료 된다. 꺄

 

 

 

다시 fastlane으로 app 배포를 시도해보았다. 새로운 인증서라 그런지 Fastlane에서 app specific password를 요구한다. 보관해놓았던 app specific password 를 복사, 붙여넣기 한다.

 

 
정상적으로 App Store에 업로드 된 것을 확인할 수 있었다. 인증서 에러는 날 때마다 무섭다.


 

반응형