GPG sign off (서명 설정)


키 생성 및 export

#설치
apt install gpg2

# 생성 gpg 2.1 버전 이상부터 있는 옵션 full
gpg --full-gen-key # algorithm, bits, expire date, password를 순서대로 설정

# 생성 키 확인
gpg --list-secret-keys --keyid-format LONG <your_email>

sec   rsa4096/30F2B65B9246B6CA 2017-08-18 [SC]
      D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CA
uid                   [ultimate] Mr. Robot <your_email>
ssb   rsa4096/B7ABC0813E4028C0 2017-08-18 [E]

# 30F2B65B9246B6CA를 복사

# key export (ASCII-Armor 포멧의 gpg public key)
gpg --armor --export 30F2B65B9246B6CA

Gitlab과 Github 설정

Gitlab
export로 나온 --BEGIN부터 --END까지 전체를 복사한 후 gitlab -> preference -> GPG Kyes에 복사해서 붙여넣는다.

Github
SSH and GPG keys 설정에 삽입

Git 설정 (signed commit을 위한)

export때 사용했던 GPG Key ID를 입력 합니다. gpg --list-secret-keys --keyid-format LONG <your_email>명령어로 확인 가능

$ git config --global user.signingkey 30F2B65B9246B6CA

커밋 수행

git commit -S -s -m "commit message"
#-s는 단순 sign-off, 커밋 메시지에 sign-off 이력 삽입
#-S는 gpg sign-off

GPG 서명된 커밋 확인

git log --show-signature -1

세부 설정

매번 하기 귀찮으면 git config --global commit.gpgsign true 설정으로 -S 옵션 제거 가능.

비밀번호 입력 주기 재설정 (GPG 2.1 이상 버전)
~/.gnupg/gpg-agent.conf에 아래 내용 추가. 약 8시간 동안 키 입력을 받지 않음.

default-cache-ttl 28800
max-cache-ttl 28800

GPG 버전 설정
git config --global gpg.program gpg2

설정 확인
git config --global -l
스크린샷 2021-03-26 오전 11.21.40

Troubleshooting

error: gpg failed to sign the data

커밋시 아래 오류가 발생하면

error: gpg failed to sign the data
fatal: failed to write commit object

export GPG_TTY=$(tty)를 ~/.bashrc에 추가하고 source ~/.bashrc하여 적용

gpg: signing failed: Inappropriate ioctl for device오류도 동일하게 해결 가능.

스택오버플로우: https://stackoverflow.com/questions/39494631/gpg-failed-to-sign-the-data-fatal-failed-to-write-commit-object-git-2-10-0/42265848#42265848

key gen시 entropy 부분에서 넘어가지 않음

gpg --gen-key시 아래 메시지에서 더이상 넘어 가지 않을 경우. 유틸을 설치한다.
적절한 마우스 움직임이나 디스크 사용으로 entropy를 증가시켜 임의성을 증가시키면 원래는 난수 기반 키가 나와야 하지만 멈춤(hangs)도 자주 발생한다.

We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy.

apt install rng-tools
service rngd start

스택오버플로우: https://serverfault.com/questions/471412/gpg-gen-key-hangs-at-gaining-enough-entropy-on-centos-6

IntelliJ IDE 관련

https://blog.kshgroup.kr/intellij-signed-commit-gpg-error/

참고자료

+ Recent posts