장비 라이센스 관련해서 자주 거론되는 fingerprint 즉 디지털 지문관련해서 생성법을 듣지 못해서 구현을 고민한 적이 있었습니다.
장비 사양을 조회하여 암호화하여 디지털인증키로 만들자 라는 이야기를 많이 했었습니다.
이번에 모바일 앱을 만들어 보려하니 구글 OAuth에서 jdk에 포함되어 있는 keytool 를 사용해서 만드는 것이 있어서 정리해 둘까 합니다.
Google Cloud OAuth 클라이언트 ID 만들기 디지털 지문 생성 방법 ( 필요시 복사 사용할 수 있도록 참고구문을 앞에 두었습니다. )
새로운 RSA 키 생성 후 SHA-1 지문 얻기
RSA 키 생성:
keytool -genkeypair -v -keystore my-release-key.keystore -alias mykey -keyalg RSA -keysize 2048 -validity 10000
SHA-1 지문 확인:
keytool -list -v -alias mykey -keystore my-release-key.keystore
생성 시 입력한 비밀번호를 사용합니다.
# 발급한 키 조회
## windows
> keytool -list -v -alias androiddebugkey -keystore
## macOS/Linux 환경
> keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
배포(릴리즈)용 SHA-1 인증서 지문 얻기
배포용 키스토어를 사용 중이라면, 아래처럼 입력합니다.
> keytool -list -v -alias [별칭] -keystore [키스토어 경로]
[별칭]에는 생성한 키의 alias를, [키스토어 경로]에는 실제 키스토어 파일 경로를 입력합니다
jdk bin 폴더에 keytool이 있고 초기 설정을 안하고 실행하면 오류가 발생합니다.
> keytool -list -v
keytool 오류: java.lang.Exception: 키 저장소 파일이 존재하지 않음
초기 설정이라고 보면 안되겠네요. 생성한 키 정보가 없어서 키 저장소 폴더에도 없다고 해석하는 것이 맞을것 같습니다.
기본 입력항목들은 다음과 같습니다.
> keytool -genkey -v -keystore my-release-key.keystore -alias mykey -keyalg RSA -keysize 2048 -validity 10000
키 저장소 비밀번호 입력: [6자 이상]
이름과 성을 입력하십시오. [성과 이름 입력]
조직 단위를 입력하십시오. [조직단위 입력]
조직 이름을 입력하십시오. [조직 이름 입력]
구/군/시 이름을 입력하십시오? [구/군/시 입력]
시/도 이름을 입력하십시오. [시/도] 입력
이 조직의 두 자리 국가 코드를 입력하십시오. [한국은 82]
CN=[성 이름], OU=[조직 단위], O=[조직 이름], L=[구/군/시], ST=[시/도], C=[국가코드] 가 맞습니까?
[아니오]: [y 입력]
<mankey> 에 대한 키 비밀번호를 입력하십시오.
(키 저장소 비밀번호와 동일한 경우 Enter 키를 누름):
-------------------- 옵션 설명 -------------------------------------------
-genkey: 키 쌍(공개키/개인키) 생성
-v: 자세한 출력
-keystore my-release-key.keystore: 생성할 키스토어 파일 이름(원하는 이름으로 변경 가능)
-alias mykey: 키 별칭(원하는 이름으로 변경 가능)
-keyalg RSA: RSA 알고리즘 사용
-keysize 2048: 키 길이(2048비트 권장)
-validity 10000: 키 유효기간(일 단위, 예: 10000일)
주의해야하는 것은 필수 옵션을 선택안해주면 예외처리 알림이 발생합니다.
> keytool -genkey
키 저장소 비밀번호 입력: [6자 이상]
( keytool 명령어에 필수 옵션인 -keyalg(키 알고리즘)를 지정하지 않으면 아래와 같이 오류가 발생합니다.
keytool 오류: java.lang.Exception: The -keyalg option must be specified.)
사용예 :
> keytool -genkey -alias mykey -keyalg RSA -keystore mykeystore.jks
- genkey 또는 -genkeypair: 키 쌍을 생성합니다.
- alias <별칭>: 키의 별칭을 지정합니다.
- keyalg RSA: 사용할 키 알고리즘을 지정합니다. (RSA, DSA, EC 등)
- keystore <파일명>: 키스토어 파일 이름을 지정합니다.
여기서 사용 가능한 알고리즘을 보면 다음과 같습니다.
알고리즘 | 설명 | 용도/특징 |
RSA | 공개키 암호화및 서명에 널리사용되는 알고리즘 | 일반적으로 인증서, SSL, 전자서명 등에서표준적으로 사용 |
DSA | 디지털 서명 알고리즘 | 주로 서명용으로 사용, 현재는 권장되지 않음 |
EC | 타원 곡선(Elliptic Curve) 알고리즘 | 더 짧은 키 길이로 높은 보안성 제공, 최근많이 사용 |
DES | 대칭키 암호화알고리즘 | 비밀키 생성(-genseckey) 시 사용, 보안상 권장되지 않음 |
DESede | Triple DES | DES보다 보안이 강화된 대칭키 알고리즘 |
전에 사용해 봤던 것인데 늘 사용할때마다 새롭네요.
다시 사용했던 이력을 검토해봐야 겠지만 FTP 인증키로 공객키, 비밀키 생성 때 사용해 본것 같아서 이것도 같이 적어봅니다.
keytool -genkeypair -alias mykey -keyalg RSA -keysize 2048 -keystore mykeystore.jks -validity 3650
-genkeypair 또는 -genkey: 키 쌍(개인키, 공개키) 생성
-alias mykey: 키 별칭
-keyalg RSA: RSA 알고리즘 사용
-keysize 2048: 키 길이(일반적으로 2048 이상 권장)
-keystore mykeystore.jks: 키스토어 파일명
-validity 3650: 유효기간(일 단위, 예시로 10년)
추가 옵션 및 참고사항
-sigalg SHA256withRSA: 서명 알고리즘을 명시할 수 있습니다(필수는 아님).
-storepass와 -keypass: 각각 키스토어와 키의 비밀번호를 지정할 수 있습니다.
생성된 키스토어(.jks) 파일은 백업해두는 것이 좋습니다.
'프로그램 > 짜투리상식' 카테고리의 다른 글
코드표기법(2024.08) (0) | 2024.08.07 |
---|---|
[docker] ubuntu 20.04 (202305) (0) | 2023.05.29 |
git 명령어 정리 (0) | 2023.04.21 |
Dorker에 jenkins 설치(2023.04) (0) | 2023.04.17 |
Dorker에 Oracle 설치(2023.04) (3) | 2023.04.15 |