React Native에서 Kakao Login 기능을 개발하던 중 Hash Key를 입력해야 하는 상황에 맞딱뜨렸고 발급하는 방법에 대해 찾아보고 정리해보려고 한다.
Hash Key란?
해시라는 것은 임의의 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑하는 것을 말한다.
이 과정에서 원본 데이터를 키(Key), 매핑하는 과정을 해싱(Hashing), 결과물로 나온 데이터를 해시 값(Hash value)라고 한다.
또한 이렇게 데이터를 해싱하는 함수를 해시 함수(Hash Function)이라고 한다.
대표적인 해시 함수에는 MD-5, SHA 함수가 있다.
MD-5
MD는 Message Digest의 약자로, 입력된 데이터를 각 512비트의 블록들로 나누어 처리하여 128 비트 길이의 해시 값을 출력하는 함수이다.
1996년, 2004년 당시 MD5의 결함들이 발견되었고, 2006년에는 노트북 한 대의 연산 능력으로 1분 안에 충돌을 발견할 수 있는 알고리즘이 개발되었다.
현재는 MD-5를 보안을 위해 사용되는 것은 권장되지 않는다.
SHA
SHA는 Secure Hash Algorithm의 약자로, 입력 데이터를 나누는 블록의 크기, 계산되는 해시 값의 크기, 최대 입력 데이터 길이, 단계 수 등이 다른 여러 가지의 버전이 있다.
SHA-1의 경우 이미 보안상 취약점이 발견되어 사용하는 것을 권장하지 않고, SHA-256 또는 SHA-512를 사용하는 것이 권장된다.
Hash에 대해 더욱 자세한 내용을 알고싶다면 아래의 사이트를 참고하면 된다.
참고 사이트
https://angangmoddi.tistory.com/m/289
해시(Hash)란?
Hash? 해시라는 것은 임의의 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 것을 말한다. 이 과정에서 원본 데이터를 키(Key), 매핑하는 과정을 해싱(Hashing), 결과물로 나온 데이터를
angangmoddi.tistory.com
우선 Hash Key를 발급 받으려면 Open SSL이 설치되어 있어야 한다.
Open SSL 설치 사이트
https://slproweb.com/products/Win32OpenSSL.html
Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions
Minimum system requirements: Windows XP or later 32MB RAM 200MHz CPU 30MB hard drive space Recommended system requirements: Windows XP or later 128MB RAM 500MHz CPU 300MB hard drive space March 14, 2023 - OpenSSL 3.1 is available. Also, Happy Pi Day. Users
slproweb.com
위의 사이트에 접속해서 최신 버전의 OpenSSL.exe 파일을 다운로드 후 설치해주면 된다.
Mobile App에서 API를 사용하기 위해선 두 개의 Hash Key가 필요하다.
Debug Hash Key
Android Studio를 설치하면 기본적으로 제공되는 debug.keystore 파일에서 발급받을 수 있다.
C:\사용자\사용자명\.android
명령 프롬프트(cmd)를 키면 기본 경로가 아래와 같이 설정되어 있을 것이다.
C:\Users\사용자명 >
위의 경로에서 아래의 명령어를 입력해주면 Debug Hash Key가 나오게 된다.
keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
! 하지만 아래와 같은 에러가 발생되었다.
Open SSL가 제대로 설치되었음에도 불구하고 openssl 을 찾지 못해서 에러가 발생되었다.
블로그를 여러 군데 뒤져보던 중 OpenSSL의 경로를 명확하게 입력하면 된다는 글을 찾았고 그대로 실행해 봤지만 이번엔 아래와 같은 에러가 발생하였다.
블로그를 찾아보았지만 나와 같은 에러가 발생한 글을 찾지 못하였다.
명령어를 보던 중 Open SSL 경로 중 Program Files에 공백이 있어서 그런거지 않을까? 라는 생각이 들었다.
그래서 OpenSSL-Win64 폴더를 Program Files폴더가 아닌 C드라이브 안에 넣어준 후 아래의 명령어를 실행했고 정상적으로 Hash Key가 생성되었다.
keytool -exportcert -alias [생성한 KeyStore의 Alias] -keystore [생성한 KeyStore의 경로] | openssl sha1 -binary | openssl base64
Release Hash Key
1. Keystore 파일 생성
Release Hash Key를 발급 받으려면 먼저 keystore 파일을 하나 생성해야 한다.
명령 프롬프트에서 아래의 명령어를 실행해준다.
keytool -genkeypair -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
생성될 keystore명과 alias는 임의대로 바꿔서 생성해주면 된다.
나오는 항목들을 아래와 같이 입력해주고 마지막으로 y를 입력하면 keystore 파일이 생성된다.
키 저장소 비밀번호 입력: (6자리 이상, 화면에는 안보이지만 입력하고 Enter를 누르면 알아서 입력됩니다.)
새 비밀번호 다시 입력: (비밀번호 재입력)
이름과 성을 입력하십시오.
[Unknown]: 이름
조직 단위 이름을 입력하십시오.
[Unknown]: 아무거나 입력하면 넘어갑니다.
조직 이름을 입력하십시오.
[Unknown]: 아무거나 입력하면 넘어갑니다.
구/군/시 이름을 입력하십시오?
[Unknown]: '시'만 입력해도 됩니다.
시/도 이름을 입력하십시오.
[Unknown]: '도'만 입력해도 됩니다.
이 조직의 두 자리 국가 코드를 입력하십시오.
[Unknown]: KR
CN=이름, OU=조직 단위, O=조직 이름, L=구/군/시, ST=시/도, C=KR이(가) 맞습니까?
[아니오]: y
설정된 프롬프트 경로로 들어가면 keystore 파일이 생성된 것을 확인할 수 있다.
2. 경로 설정 및 Hash Key 발급
생성한 keystore 파일을 아래의 경로로 옮겨준다.
<React Native Project Folder>/android/app/
그리고 명령 프롬프트 창을 열어서 아래의 코드를 입력해주면 Release Hash Key가 생성된다.
keytool -exportcert -alias release -keystore <Project 폴더 경로>\android\app\my-upload-key.keystore -storepass android -keypass android | C:\OpenSSL-Win64\bin\openssl sha1 -binary | C:\OpenSSL-Win64\bin\openssl base64
! 폴더 경로를 정확하게 입력하지 않으면 다른 Hash Key가 생성될 수 있으므로 경로를 잘 확인한 후 실행해야 한다.
3. Release Hash Key 설정
android/gradle.properties 파일에 아래의 코드를 추가해준다.
MYAPP_RELEASE_STORE_FILE=my-upload-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=비밀번호
MYAPP_RELEASE_KEY_PASSWORD=비밀번호
참고 사이트
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=93kwiyoung&logNo=220360854080
[OpenSSL] 'openssl'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다
명령프롬프트(cmd)를 켜서 해시키를 확인할 수 있다. 보통 keytool -exportcert -alias testkey -keystore ...
blog.naver.com
[React Native] RN - APK 추출하기 3편(AAB 파일 생성)
안녕하세요. 이번 시간에는 React Native APK 추출할 때 용량도 줄이고, 구글 콘솔에 업로드를 시킬 수 있는 aab 파일을 생성하는 방법에 대해서 알아보도록 하겠습니다. 키 생성 my-upload-key과 my-key-alia
ssilook.tistory.com
https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android#add-key-hash
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
https://itstudy-mary.tistory.com/376
카카오 API, Android] 키 해시 부여받기
카카오 API를 사용할때, 안드로이드 개발자이며 막 개발을 시작한 사람들의 머리를 부여잡게 하는 골치아픈 문제가 있다. 바로 키 해시.............. 근데 개발자인 나도 헛갈림 ㅠㅠㅠㅠㅋㅋㅋㅋ
itstudy-mary.tistory.com
'📱Mobile > React Native' 카테고리의 다른 글
[React Native] Kakao Login 구현하기 (0) | 2023.03.28 |
---|---|
[React Native] Naver Login 구현하기 (0) | 2023.03.28 |
[React Native] Firebase 문자 인증 (0) | 2023.03.23 |
[React Native] Window에서 Firebase SHA-1 인증서 확인 (0) | 2023.03.22 |
[React Native] Firebase 프로젝트 생성 및 연동 (0) | 2023.03.22 |
댓글