개발/Tizen

[타이젠 인증서] SIGNATURE_INVALID_HASH_SIGNATURE [79] failed

sodas 2016. 2. 1. 15:14
반응형

1. 실제 타이젠 단말에 앱 설치해서 테스트하기



  타이젠에서 PC에 단말을 연결한 다음 개발자 옵션을 켜고 IDE에 연결한 후 예제를 로드해서 처음으로 Run As로 실행하면 다음과 같은 Error로그를 보게된다. SIGNATURE_INVALID_HASH_SIGNATURE 는 인증서가 설치되어 있지 않다는 의미이다. (검색해도 나오지 않아서 애먹었음 그리고 에뮬레이터의 경우에는 나오지 않는다.). 에러의 의미는 인증서가 없어서 단말에서 앱을 실행할 수 없다는 메세지이며 앱을 실행하기 위해서는 인증서를 발급 받아야한다. 타이젠에서는 앱 개발 시단말의 DUID(Device Unique ID)를 통해 앱을 서명(Signing) 하게 하고 앱이 해당 단말에서만 실행될 수 있도록 하고 있다. 이런 불편한 단계가 개발에 추가된 이유는 앱이 다른 타이젠 단말기에 사이드로딩(Side loading)되어 불법으로 유통되는 것을 막기위한 것이다. 개발자의 앱이 스토어가 아닌 인터넷에서 불법 유통되더라도 다른 단말에서는 실행되지 않으므로 불법 유통에 대한 걱정을 많이 덜 수 있다.   


end process (fail)

processing result : SIGNATURE_INVALID_HASH_SIGNATURE [79] failed

spend time for pkgcmd is [1726]ms

cmd_ret:79

Unexpected stop progress...


2, 인증서 발급 방법



인증서 발급은 다음과 같은 단계로 진행된다.

1. 사이닝 요청 파일을 생성(Generate A Certificate Signing Request)

IDE의 툴바에서  버튼을 누르면 다음과 같은 화면을 볼 수 있다.     



Device Type을 선택하고 대부분은 Mobile/Wearable을 선택한 다음 Generate a certificate signing request(CSR file)을 누르면 아래와 같은 팝업이 나온다.



기존에 생성된 인증서(Certificate)가 있다면 임포트(Impport)해서 사용할 수 있으나 우리의 경우는 신규로 생성하는 것이니 그냥 Next를 누른다.


적당한 Name 과 Password 를 정해서 입력한 후 Finish 버튼을 누르면 생성에 성공했다는 메세지와 인증서 요청 파일(Author.csr)의 경로가 나온다. 다른 부분은 입력해도 되고 안해도 된다. 대부분 SDK를 설치한 폴더 아래 /keystore 안 author.csr 로 생성된다.   

 

2. 생성된 요청 파일로 인증서를 요청함 (Request Certificates)

자 이제 생성한 인증서 요청 파일(Author.csr)을 통해 인증서를 요청해보자.아래 Request the certificate를 누른다.



그럼 Samsung Developers (http://developer.samsung.com) 로 연결되면서 아래와 같은 화면이 나온다.  웹화면이므로 인터넷이 연결되어 있어야 한다. 혹시 아래 사이트에 계정이 있다면 ID/Password를 입력하고 없다면 Create a Samsung Account를 눌러서 하나 만든다. 이 때 ID는 email ID로 나중에 인증서를 받을 email이니 실제 사용하는 것을 입력해야한다.




로긴하고 나면 다음과 같은 화면이 나온다. 



1번에서 생성한 인증서 요청 파일을 업로드한 후 Submit을 클릭한다. 이후 Samsung Developer를 가입할 때 사용했던 email ID로 인증서가 날아온다. (1분정도 소요된 것으로 기억된다.) email을 확인하면 author.crt가 첨부되어 있다.  


3. Device Profile을  요청함 

그 다음으로 IDE 에 연결된 단말의 Device Profile을 생성해 보자. 아래 Request a device profile을 누른다.




아래 화면에서 해당 정보를 입력한다. 로그인이 되어 있다면 E-mail 부분에는 자신의 정보가 들어가 있을 것이다. Privilege Level 일반 사용자는 Public을 선택하면 된다. 일반적으로 Privilege Level에 의해 접근 가능한 API의 수준이 결정된다.. Partner 나 Platform은 삼성과 미리 이야기가 되었을 경우에 가능한 것으로 보인다. Developer Type 도 Individual로 선택한다. Device ID는 단말의 DUID를 입력해준다. PC에 연결되어 있다면 Connection Exploerer에서 확인이 가능하고 인증서 신청시 상단에 Connected devices에 보이게 된다. Copy 버튼을 누르면 클립보드에 복사가 되니 복사해서 붙여넣기 하자. 이후 Submit 버튼을 누르면 메일로 device-profile.xml 이 날아온다. 




4. 인증서를 등록함 (Register Certificate)

아래에서 Browse를 누르고 메일로 날아온 author.crt와 device-profile.xml를 지정한다. Author부분에는 요청서를 생성할 때 입력했던 비밀번호를 를 입력하고 Device Profile 부분에는 메일로 device-profile.xml과 같이 전달된 비밀번호를 입력한다. 확인을 누르고 Registration succeeded가 뜨면 성공.






4. Device Profile을 단말로 전송

Connection Explorer에서 연결된 단말을 선택하고 Permit to install application을 누르면 성공적으로 Device Profile이 설치된다. 





이후에 Run As를 통해서 App을 실행하면 단말에 자동으로 다운로드되어 에러없이 실행되는 것을 볼 수 있음


 


반응형