署名付きコミットを行う
署名付きコミットとは
署名付きコミットとは、コミットにGPG署名を付けることです。これにより、コミットの内容が変更されていないことを確認できます。
署名にはS/MIME署名とGPG署名の2種類がありますが、GitではGPG署名が使われます。
準備
GPGコマンドのインストール
Ubuntu(WSL) |
---|
| sudo apt update
sudo apt install gpg
|
GPGキーペアの作成
GPGキーペアの作成
- 以下のようなメッセージが表示されます。デフォルトの設定で問題ありません。
| 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)
(14) Existing key from card
Your selection? 1
|
- 鍵のサイズを選択します。デフォルトの設定で問題ありません。
| RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 4096
|
- 鍵の有効期限を選択します。デフォルトの設定で問題ありません。
| 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) 0
|
- 問題がなければ、yを入力してEnterキーを押します。
- ユーザー名とメールアドレスを入力します。
- ユーザ名は、GitHubのユーザ名を入力します。
- メールアドレスは、GitHubのメールアドレスを入力します。
- コメントは任意です。
| Real name: <username>
Email address: <email>
Comment:
|
- パスフレーズを入力します。パスフレーズは、GPGキーを使用する際に必要です。
| Passphrase: ________________________________________
|
- 以下のようなメッセージが表示されれば、GPGキーペアの作成が完了です。
| gpg: key <key_id> marked as ultimately trusted
|
GPGキーの確認
| gpg --list-secret-keys --keyid-format LONG
|
GPGキーの確認
- 以下のようなメッセージが表示されます。
| /home/<username>/.gnupg/pubring.kbx
-------------------------------
sec 4096R/<key_id> <date> [expires: <date>]
uid <username> <email>
ssb 4096R/<sub_key_id> <date> [expires: <date>]
|
<key_id>
がGPGキーのIDです。このIDを使用して、署名付きコミットを行います。
<sub_key_id>
はサブキーのIDです。このIDは、GPGキーのサブキーを使用する際に必要です。
<username>
は、ユーザ名です。
<email>
は、メールアドレスです。
<date>
は、GPGキーの作成日です。
[expires: <date>]
は、GPGキーの有効期限です。
4096R
は、GPGキーのサイズです。
公開鍵の登録
公開鍵の取得
| gpg --armor --export <key_id>
|
公開鍵の取得
- 公開鍵が表示されます。
| -----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2
mQINBF9Z8QUBEAC
...
-----END PGP PUBLIC KEY BLOCK-----
|
- 表示された内容全てをコピーします。
GitHubに公開鍵を登録
- GitHubにログインします。
- 右上のアイコンをクリックし、
Settings
を選択します。
- 左側のメニューから
SSH and GPG keys
を選択します。
New GPG key
をクリックします。
Key
に、公開鍵をコピーして貼り付けます。
Add GPG key
をクリックします。
- GitHubに公開鍵が登録されました。
GPGキーの設定
GPGキーの設定
| git config --global user.signingkey <key_id>
|
GPGキーの確認
| git config --global --get user.signingkey
|
GPGキーの確認
- 以下のようなメッセージが表示されます。
<key_id>
がGPGキーのIDです。
署名付きコミット
署名付きコミット
署名付きコミットを行うには、-S
オプションを使用します。
| git commit -S -m "commit message"
|
リポジトリ内のコミット全てに署名を付ける
| cd <repository>
git config commit.gpgsign true
|
リポジトリ内のコミット全てに署名を付ける
<repository>
には、署名を付けたいリポジトリのパスを指定します。
- このコマンドを実行すると、リポジトリ内のコミット全てに署名が付けられます。
- この設定は、リポジトリ内の
.git/config
に保存されます。
全てのリポジトリのコミット全てに署名を付ける
全てのリポジトリのコミット全てに署名を付ける
この設定は、全てのリポジトリのコミット全てに署名が付けられます。
| git config --global commit.gpgsign true
|
パスフレーズをキャッシュに記憶する
| git config --global credential.helper cache
|
| git config --global credential.helper store
|
| git config --global credential.helper 'cache --timeout=3600'
|
パスフレーズをキャッシュに記憶する
cache
は、パスフレーズをキャッシュに記憶しますが、一時的なものです。
store
は、パスフレーズをファイルに記憶しますが、平文で保存されるため、注意が必要です。
--timeout=3600
は、パスフレーズをキャッシュに記憶する時間を指定します。デフォルトは15分です。