Git은 기본적으로 안전하게 설계되어있다. 그렇지만 저장소에 아무나 접근하지 못하게 하고 진짜로 확인된 사람만 접근하게 하거나, 저렇게 초록 딱지를 붙여서 ‘이거 진짜 내가 한거 맞아요!’ 라고 박기 위해서는 GPG 사이닝이 필요하다.
GPG 사이닝에는 2가지 방법이 있다.
- GPG와 생성된 키를 사용하는 방법
- krypt.co 에서 나온 Kryptonite을 사용하는 방법
이 포스트에서는 GPG를 통해 Commit Verified 딱지를 붙이는 방법을 소개한다. 사실 Kryptonite를 사용하는 방법이 훨씬 더 간단하긴 하지만 본문에서 소개하는 내용을 일부를 피하지는 못할 것이다.
이 방법은 Mac High Sierra 에서 작성되었으며, 2019년 9월 28일에 작성되었음을 알린다. 너무 오래되었으면 이 글을 보지 말고 다른 글을 참고하자.
1.소프트웨어 설치하기
우리는 맥의 홈브루 패키지 매니저를 통해서 설치를 진행할것이다. 적당한 터미널에서 다음을 입력하자.
brew install gpg2 gnupg pinentry-mac
2.~/.gnupg/gpg-agent.conf 만들기
우선 맥의 홈 디렉토리에서 .gnupg 디렉토리를 생성하고 gpg-agent.conf 를 생성한 후 다음과 같이 입력한다.
# 아래의 텍스트를 입력!
pinentry-program /usr/local/bin/pinentry-mac
대부분 잘 알고있을것이라 생각한다. 맥이 익숙하지 않거나 처음으로 사용하는 사람이라면 nano를 사용하는 쪽이 더 편할 것이다.
3.~/.gnupg/gpg.conf 만들기
아마 2번의 파일이 없다면 이 파일도 없을 것인데, 같은 경로에서 gpg.conf 을 생성하고, 다음과 같이 입력 후 저장한다.
# use-agent 가 있다면 코멘트를 없애주자!
# gpg를 gpg-agent 로 사용한다는 뜻이다.
use-agent
4.쉘을 수정하기
~./bash_profile 이나 ~./bashrc 또는 ~./zshrc 등 사용하는 쉘의 설정에서 맨 아랫줄에 다음과 같이 입력한다.
export GPG_TTY=`tty`
5.쉘을 재시작한다.
터미널을 껐다가 켜준다. 끄기 싫다면 source [자신이 수정한 쉘 프로필 파일] 을 통해 다시 불러와도 된다.
6.GPG키를 만든다.
다음과 같이 입력한다.
gpg --full-gen-key
그러면 아래처럼 선택해준다.
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 4
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 3y
Key does not expire at all
Is this correct? (y/N) y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"자신이 입력한 이름 (자신이 입력한 이름) <자신의 이메일>"
Real name: 자신의 이름
Email address: 자신의 이메일
Comment:
You selected this USER-ID:
"자신의 이름 <자신의 이메일>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
7.파일 퍼미션을 변경한다.
폴더 퍼미션을 700을 준다.
chmod 700 ~/.gnupg
8.Git에 입력할 발급받은 키를 찾는다.
# 키를 찾는다.
gpg -k
# keyID 를 찾는다. rsa4096/ 이후의 숫자를 복사한다.
gpg -K --keyid-format SHORT
9. 디지털지문을 내보낸다.
우리는 위의 8번에서 키를 찾을 수 있었다. 8번에서 숫자를 복사하라고 했었다. 다음과 같이 입력하자.
gpg --armor --export [키 id]
10. GPG를 사용하기 위해 Git 에 설정하기
터미널에 다음과 같이 입력한다.
git config --global gpg.program $(which gpg)
git config --global user.signingkey <아까 복사한 키>
git config --global commit.gpgsign true
이후부터 GPG 키가 자동으로 발려서 커밋 될 것이고 맨 위에서 소개했던 초록 딱지가 붙여지게 될 것이다.
11. 끝 .. 그리고…
이렇게 하면 GPG키가 발려서 커밋될 것이다. 근데 하나 남았다. github 사이트의 Settings – SSH and GPG keys 에서 자신의 GPG 키를 등록해주어야 한다.
아까전에 gpg –armor –export <키id> 를 입력했을 때 나오는 것이 그것이다.
등록해주고 커밋하면 verified 딱지를 볼 수 있을 것이다.
이 글은 https://gist.github.com/troyfontaine/18c9146295168ee9ca2b30c00bd1b41e 을 많이 참고했음을 알린다.