GPG 서명 관련 팁들 모음
저장되어 있는 키 목록 출력
gpg --list-keys
명령어를 사용하면 저장되어 있는 공개 키의 목록을 출력합니다.
$ gpg --list-keys
/Users/taeho/.gnupg/pubring.kbx
-------------------------------
pub rsa4096 2014-07-01 [SC]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid [ unknown] Taeho Kim <[email protected]>
sub rsa4096 2014-07-01 [E]
키 id를 함께 보고 싶다면 --keyid-format
옵션을 추가하면 됩니다.
$ gpg --list-keys --keyid-format LONG
/Users/taeho/.gnupg/pubring.kbx
-------------------------------
pub rsa4096/[KEYID] 2014-07-01 [SC]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid [ unknown] Taeho Kim <[email protected]>
sub rsa4096 2014-07-01 [E]
비밀 키 목록을 출력하고 싶다면 --list-secret-keys
옵션을 사용합니다.
$ gpg --list-secret-keys
/Users/taeho/.gnupg/pubring.kbx
-------------------------------
sec rsa4096 2014-07-01 [SC]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid [ unknown] Taeho Kim <[email protected]>
ssb rsa4096 2014-07-01 [E]
키 비밀번호 변경
키 비밀번호를 변경하려면 먼저 키 편집 모드로 진입해야 합니다.
키 편집 모드는 gpg --edit-key [키 ID]
로 진입할 수 있습니다. 만약 키 ID가 ABCD0123
이라면 gpg --edit-key ABCD0123
을 입력하면 됩니다.
키 편집 모드에 진입한 후 passwd
명령어를 사용하면 비밀번호를 변경할 수 있습니다.
gpg> passwd
비밀번호 변경이 완료되었다면 save
명령어를 사용하여 변경 내용을 저장합니다.
gpg > save
공개 키 배포
내 비밀키로 서명한 파일을 다른 사람이 검증하기 위해, 내 공개키를 배포해야 합니다.
공개키는 --keyserver
및 --send-keys
옵션을 사용하여 배포할 수 있습니다.
$ gpg --keyserver hkp://pool.sks-keyservers.net --send-keys [키 ID]
만약 gpg: keyserver send failed: No route to host
와 같은 메시지가 표시되며 키 배포에 실패할 경우, 다음과 같이 키 서버의 주소를 바꾸어 시도하면 됩니다.
$ gpg --keyserver hkp://ipv4.pool.sks-keyservers.net:80 --send-keys [키 ID]
참고
Git에서 GPG 키 서명이 실패하는 경우
gpg 버전 2 이상을 사용하면서 Git에서 GPG 서명을 시도할 때 다음과 같은 에러 메시지가 표시된다면,
error: gpg failed to sign the data
fatal: failed to write commit object
시스템 환경 변수에 다음 내용을 추가하면 됩니다.
GPG_TTY=$(tty)
참고
산출물 서명시 오류가 발생하는 경우
Gradle 빌드 툴을 사용하여 라이브러리 산출물을 서명할 때 다음과 같은 오류가 발생한다면,
Could not evaluate onlyIf predicate for task ':firebase-auth:signArchives'.
> Unable to read secret key from file: /Users/taeho/.gradle/secret.asc (it may not be a PGP secret key ring)
비밀 키를 secring.gpg
형식으로 다시 추출해야 합니다.
GPG 2.1 이상을 사용하는 환경이 해당되며, gpg --export-secret-keys -o secring.gpg
명령어를 사용하면 됩니다.