[2019 올해의 판] GPG에 git의 commit에 서명하고 GitHub에 Verify 배지를 달아줍니다.

8245 단어 GitGitHubgpg
가끔 보는 GitHub의 커밋에 Verify 배지가 나오는 거 하고 싶어요.
적당히 검색된 일본어 정보라면 최신 환경에서 직접적인 동작을 할 수 없는 점이 몇 가지 있으니 요약해 보자

환경


macOS Mojave 10.14.3
GNU bash, 버전 5.0.2(1)-release(x86_64-apple-darwin18.2.0)
homebrew 2.0.2-10-g605c0e8
Homebrew/homebrew-core (git revision 305be; last commit 2019-02-20)
git version 2.20.1
gpg (GnuPG) 2.2.13

설정 방법


homebrew를 사용하여 다음 요령에 따라 GPG를 설치합니다.
과거 버전에서는 gpg-agent가 다른 패키지였지만 새 버전부터는 gpg가 한데 묶인 것 같다
참고 자료
brew install gnupg pinentry-mac
이거 쓸 때 2.2.13 버전을 깔았어요.

서명 키 생성


다음 요점에 따라 명령을 집행하다
gpg --full-generate-key
적당히 투덜거렸으면 좋겠어요.
gpg --gen-key
이런 설명이 있지만 키 길이를 지정할 수 없기 때문에full로 실시하는 것을 권장합니다

키 유형

$ gpg --full-generate-key
gpg (GnuPG) 2.2.13; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ご希望の鍵の種類を選択してください:
   (1) RSA と RSA (デフォルト)
   (2) DSA と Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
あなたの選択は?
1 기본값이면 될 것 같아요.

키 길이

RSA 鍵は 1024 から 4096 ビットの長さで可能です。
鍵長は? (2048)
GitHub는 4096 비트를 추천하므로 4096 을 입력합니다.

만료 날짜

鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で期限切れ
      <n>w = 鍵は n 週間で期限切れ
      <n>m = 鍵は n か月間で期限切れ
      <n>y = 鍵は n 年間で期限切れ
鍵の有効期間は? (0)
이것도 원하는 기한을 두고 갑니다.

사용자 ID 구성

GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。

本名: Taro Yamada
電子メール・アドレス: [email protected]
コメント: GitHub
次のユーザIDを選択しました:
    "Taro Yamada (GitHub) <[email protected]>"
이것도 봤어요. 이름과 메일 주소를 입력하세요.
이 메일 주소는 git가 제출할 때 사용하는 메일 주소와 같습니다. 만약 이 메일 주소가 GitHub에 등록되지 않았다면 Verify 휘장을 받지 못했을 수도 있습니다 (미검증)

암호 구문 입력


이런 화면이 나왔어요. 보시다시피 비밀번호 입력 화면 같아요.
당황하지 말고 떠들지 말고 비밀번호를 입력하세요

LANG=C 이후에 실행하면 영어로 올바르게 표시될 수 있음(검증되지 않음)
밑줄로 표시된 부분은 입력란이고 타자를 치면 * 표시가 표시되기 때문에 입력할 수 있다
키보드에서 선택하고 계속 전진하면 이런 화면이 됩니다. 보시다시피 비밀번호를 다시 입력하라는 말인 것 같습니다.
당황하지 말고 떠들지 말고 방금 입력한 것과 같은 비밀번호를 입력하세요

키 생성 대기

たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
우리 알을 비틀어 기다리자.

GPG 설정 설정


모형을 얻다


설정 파일을 공개하는 사람이 있으니 아래 주문을 읽고 모형을 얻으세요
참고 자료
curl https://gist.githubusercontent.com/bmhatfield/cc21ec0a3a2df963bffa3c1f884b676b/raw/893ab10dc8cd4d6c3cc4ce49bd010a20b54ba4e8/gpg.conf > ~/.gnupg/gpg.conf
curl https://gist.githubusercontent.com/bmhatfield/cc21ec0a3a2df963bffa3c1f884b676b/raw/893ab10dc8cd4d6c3cc4ce49bd010a20b54ba4e8/gpg-agent.conf > ~/.gnupg/gpg-agent.conf

gpg-agent.conf 수정


use-standard-socket 옵션이 유효하지 않은 것 같습니다.
주석 두 번째 행
# Enables GPG to find gpg-agent
use-standard-socket ☆これを消す

# Connects gpg-agent to the OSX keychain via the brew-installed
# pinentry program from GPGtools. This is the OSX 'magic sauce',
# allowing the gpg key's passphrase to be stored in the login
# keychain, enabling automatic key signing.
pinentry-program /usr/local/bin/pinentry-mac

.bash_유지 보수 소개


gpg-agent의 시작 매개 변수는 아래의 원본 코드를 참고하는 동시에 변한 것 같습니다.
https://gist.githubusercontent.com/bmhatfield/cc21ec0a3a2df963bffa3c1f884b676b/raw/893ab10dc8cd4d6c3cc4ce49bd010a20b54ba4e8/.profile
# In order for gpg to find gpg-agent, gpg-agent must be running, and there must be an env
# variable pointing GPG to the gpg-agent socket. This little script, which must be sourced
# in your shell's init script (ie, .bash_profile, .zshrc, whatever), will either start
# gpg-agent or set up the GPG_AGENT_INFO variable if it's already running.

# Add the following to your shell init to set up gpg-agent automatically for every shell
if [ -f ~/.gnupg/.gpg-agent-info ] && [ -n "$(pgrep gpg-agent)" ]; then
    source ~/.gnupg/.gpg-agent-info
    export GPG_AGENT_INFO
else
    eval $(gpg-agent --daemon)
fi
상술한 물건을 프로필에 쓴 후에 보존하다
gpg-agent가 시작된 오류가 발생하면
killall gpg-agent
그리고 소스를 진행하면 괜찮을 것 같아요.

git 설정 서명


GPG의 서명 ID 검색


다음 주문을 읽으면 서명 ID가 클립보드에 복사됩니다.
gpg --list-secret-keys --keyid-format LONG | grep ^sec | cut -f4 -d ' ' | cut -f2 -d '/' | pbcopy

git 설정 서명

# 署名鍵の指定
git config --global user.signingkey {ペースト}
# gpgコマンドのパスを設定
git config --global gpg.program $(which gpg)
# コミット時の自動署名の有効化
git config --global commit.gpgsign true

GitHub에 공개 키 등록


공개 키는 다음 요령에 따라 클립보드에 복사할 수 있다
gpg --armor --export {GPGの署名ID} | pbcopy
그리고 GitHub의 SSH and GPG keys 페이지에서 GPG의 공개 키로 등록하면 됩니다.
https://github.com/settings/keys
만약에 여기에 실시된다면git에서 어떤 제출을 실시한 상황에서 암호구의 입력 화면이 나타날 것입니다. 정확한 암호구를 입력하면 제출은 서명됩니다.

참조 페이지

좋은 웹페이지 즐겨찾기