본문 바로가기

Flutter/tip

[플러터] 맥에서 안드로이드 키해시 구하기 디버그/릴리즈 [flutter] Obtain Android KeyHash from Mac

첫 번째 디버그 키해시(추천)

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64

 
위 명령어를 터미널에 입력하게 되면

이러한 형태로 경고문과 디버그용 키해시값을 받게 됩니다.
명령어 가운데에 보시면 파일의 위치가 표기되어있는데
Command + Shift + .
을 누르시게 되면 숨겨진 파일을 볼 수 있습니다.
그리하여 이 경로를 추적해 보면

이렇게 Users/사용자맥이름/.android/에 있는 debug.keystore 파일의 값을 받게 됩니다.


두 번째 디버그 키해시(비추천)

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v -storepass android | openssl sha1 -binary | openssl base64

동일하게 위 명령어를 터미널에 입력하게 되면

분명 디버그 키해시값을 받는 명령어지만 중간의 "-list -v" 의 유무에 차이가 있습니다.


차이점

둘 다 디버그용 키해시를 받는 값이라 사실 크게 상관은 없지만 양자택일의 논리로 추천과 비추천이라 입력하게 되었습니다.
쓰면 안 된다는 뜻이 아닌 두 명령어의 목적이 다름임을 말씀드립니다.


첫 번째 명령어는
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
인증서를 내보내고, 그 후 OpenSSL을 사용하여 인증서의 SHA1 해시를 계산하여 base64로 인코딩합니다.
이는 인증서 자체의 SHA1 해시 값을 계산합니다.


두 번째 명령어는
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v -storepass android | openssl sha1 -binary | openssl base64
인증서 정보를 출력하고, 그 후 OpenSSL을 사용하여 전체 출력의 SHA1 해시를 계산하여 base64로 인코딩합니다.
이는 인증서의 텍스트 정보(즉, 인증서의 메타데이터 포함)의 SHA1 해시 값을 계산합니다.


이로 인해 두 명령어의 결과가 다르게 나타납니다. 두 명령어의 목적은 다르지만, 키해시를 추출하는데 일반적으로 첫 번째 방법이 사용됩니다.


릴리즈 키해시

 

  • 첫 번째, 키스토어 생성하기
keytool -genkey -v -keystore ~/my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias

위 명령어를 터미널에서 실행하여 줍니다.
이 명령어를 풀어 말씀드리자면

  • keytool:
    • Java Keytool 유틸리티를 호출하는 명령입니다. Keytool은 키와 인증서를 생성, 관리, 변환하는 도구입니다.
  • -genkey:
    • 새 키를 생성(generation)하는 옵션입니다. 일반적으로 키쌍(공개키와 개인키)을 생성합니다.
  • -v:
    • 상세(verbose) 출력을 활성화하는 옵션입니다. 명령 실행 중 발생하는 모든 정보를 자세히 출력합니다.
  • -keystore ~/my-release-key.jks:
    • 키스토어 파일의 경로와 이름을 지정합니다. ~/my-release-key.jks는 사용자의 홈 디렉터리에 my-release-key.jks라는 이름의 키스토어 파일을 생성합니다. 키스토어는 여러 키와 인증서를 저장하는 파일입니다.
  • -keyalg RSA:
    • 생성할 키의 알고리즘을 지정합니다. 이 경우 RSA 알고리즘을 사용하여 키를 생성합니다. RSA는 비대칭 암호화 알고리즘입니다.
  • -keysize 2048:
    • 생성할 키의 크기를 비트 단위로 지정합니다. 이 경우 키 크기는 2048비트입니다. 키 크기가 클수록 보안은 강화되지만, 처리 속도가 느려질 수 있습니다.
  • -validity 10000:
    • 생성된 키와 인증서의 유효 기간을 일(day) 단위로 지정합니다. 이 경우 유효 기간은 10000일입니다.
  • -alias my-key-alias:
    • 키스토어 내에서 키를 식별하는 별칭(alias)을 지정합니다. my-key-alias는 생성된 키의 별칭입니다. 이 별칭을 사용하여 키스토어 내에서 특정 키를 참조할 수 있습니다.

 
이러한 식의 옵션이 적용된 것을 볼 수 있는데

 
이 구간을 변경해 주면 저장위치와 별칭을 변경하여 입력할 수 있습니다.
이렇게 입력을 하게 되면

이러한 식으로 키해시를 입력할 때 검증할 수 있는 자료들을 입력하라고 나옵니다.

  1. 비밀번호
  2. 비밀번호 재입력
  3. 이름
  4. 부서이름
  5. 조직(회사)이름
  6. 도시 이름
    • Ex) Seoul
  7. 도시의 전체이름
    • Ex) Seoul Repubic of Korea
  8. 국가코드
    • Ex) KR

이렇게 모든 입력이 끝나고 틀린 부분이 있다면 no를 입력해 주시고 진행하시려면 yes를 입력해 주시면 됩니다.
비밀번호는 잊어버리는 수가 있으니 잘 기억해 주시거나 잘 보관해 주시면 되겠습니다.


  • 두 번째, 키해시 생성하기
keytool -exportcert -alias my-release-key -keystore /Users/woogie/my-release-key.jks | openssl sha1 -binary | openssl base64

위 명령어를 터미널에 입력하게 되면

이러한 형태의 비밀번호를 입력하라고 요청이 오는데 아까 입력해 두신 비밀번호를 입력해 주시면 키해시값이 정상적으로 나오는 것을 확인하실 수 있습니다.

keytool -exportcert -alias my-release-key -keystore /Users/woogie/my-release-key.jks | openssl sha1 -binary | openssl base64
이 명령어 또한 

키스토어를 생성했을 당시 별칭과 저장경로를 변경하셨다면 바꾸어 입력해주셔야 합니다.