Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

Git へ署名キーを伝える

ローカル環境でコミットに署名するには、使う GPG、SSH、 または X.509 キーがあることを Git に知らせる必要があります。

Git へ GPG キーを伝える

コミッター ID と、GitHub.com でのアカウントに関連付けられた検証済みのメール アドレスに一致する GPG キーを使っている場合、コミットやタグへの署名を始めることができます。

コミッターアイデンティティにマッチする GPG キーを持っていない場合、既存のキーとメールアドレスを関連付ける必要があります。 詳細については、「メールと GPG キーの関連付け」を参照してください。

複数の GPG キーを持っている場合、どれを使うかを Git に伝える必要があります。

  1. [ターミナル][ターミナル][Git Bash] を開きます。 1. --gpg-sign で署名するときに別のキー形式を使うように以前、git を構成している場合、openpgp の既定形式が使用されるよう、この構成を解除してください。

    $ git config --global --unset gpg.format
    ``` 1. 公開キーと秘密キーの両方がある GPG キーを長い形式で一覧表示するには、`gpg --list-secret-keys --keyid-format=long` コマンドを使用します。 コミットやタグに署名するには秘密鍵が必要です。
    
    ```shell{:copy}
    $ gpg --list-secret-keys --keyid-format=long
    

    注: Linux での一部の GPG インストールには、代わりに既存のキーの一覧を表示するには、gpg2 --list-keys --keyid-format LONG の使用が必要となる場合があります。 この場合、git config --global gpg.program gpg2 を実行して gpg2 を使用するには、Git を構成する必要もあります。

    1. GPGキーのリストから、使いたいGPGキーIDの長い形式をコピーしてください。 この例では、GPG キー ID は `3AA5C34371567BD2` です。 ```shell{:copy} $ gpg --list-secret-keys --keyid-format=long /Users/hubot/.gnupg/secring.gpg ------------------------------------ sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10] uid Hubot ssb 4096R/4BB6D45482678BE3 2016-03-10 ``` 1. Git でプライマリ GPG 署名キーを設定するには、以下のテキストを貼り付けて、使いたいプライマリ GPG キー ID に置き換えます。 この例では、GPG キー ID は `3AA5C34371567BD2` です。
    $ git config --global user.signingkey 3AA5C34371567BD2
    または、サブキーを設定するときは、`!` サフィックスを含めます。 この例の GPG サブキー ID は `4BB6D45482678BE3` です。
    $ git config --global user.signingkey 4BB6D45482678BE3!
    1. 必要に応じて、既定ですべてのコミットに署名するように Git を構成するには、次のコマンドを入力します。
    $ git config --global commit.gpgsign true
    

    詳細については、「コミットに署名する」を参照してください。

  2. GPG スイートを使用していない場合は、zsh シェルで次のコマンドを実行して、存在する場合は .zshrc ファイル、または .zprofile ファイルに GPG キーを追加します。

    $ if [ -r ~/.zshrc ]; then echo 'export GPG_TTY=$(tty)' >> ~/.zshrc; \
      else echo 'export GPG_TTY=$(tty)' >> ~/.zprofile; fi

    または、bash シェルを使用する場合は、次のコマンドを実行します。

    $ if [ -r ~/.bash_profile ]; then echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile; \
      else echo 'export GPG_TTY=$(tty)' >> ~/.profile; fi
  3. 必要に応じて、PIN またはパスフレーズの入力を求めるメッセージを表示するには、pinentry-mac をインストールします。 たとえば、Homebrew を使用すると、次のようになります。

    $ brew install pinentry-mac
    $ echo "pinentry-program $(which pinentry-mac)" >> ~/.gnupg/gpg-agent.conf
    $ killall gpg-agent

Git へ GPG キーを伝える

コミッター ID と、GitHub.com でのアカウントに関連付けられた検証済みのメール アドレスに一致する GPG キーを使っている場合、コミットやタグへの署名を始めることができます。

コミッターアイデンティティにマッチする GPG キーを持っていない場合、既存のキーとメールアドレスを関連付ける必要があります。 詳細については、「メールと GPG キーの関連付け」を参照してください。

複数の GPG キーを持っている場合、どれを使うかを Git に伝える必要があります。

  1. [ターミナル][ターミナル][Git Bash] を開きます。 1. --gpg-sign で署名するときに別のキー形式を使うように以前、git を構成している場合、openpgp の既定形式が使用されるよう、この構成を解除してください。

    $ git config --global --unset gpg.format
    ``` 1. 公開キーと秘密キーの両方がある GPG キーを長い形式で一覧表示するには、`gpg --list-secret-keys --keyid-format=long` コマンドを使用します。 コミットやタグに署名するには秘密鍵が必要です。
    
    ```shell{:copy}
    $ gpg --list-secret-keys --keyid-format=long
    

    注: Linux での一部の GPG インストールには、代わりに既存のキーの一覧を表示するには、gpg2 --list-keys --keyid-format LONG の使用が必要となる場合があります。 この場合、git config --global gpg.program gpg2 を実行して gpg2 を使用するには、Git を構成する必要もあります。

    1. GPGキーのリストから、使いたいGPGキーIDの長い形式をコピーしてください。 この例では、GPG キー ID は `3AA5C34371567BD2` です。 ```shell{:copy} $ gpg --list-secret-keys --keyid-format=long /Users/hubot/.gnupg/secring.gpg ------------------------------------ sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10] uid Hubot ssb 4096R/4BB6D45482678BE3 2016-03-10 ``` 1. Git でプライマリ GPG 署名キーを設定するには、以下のテキストを貼り付けて、使いたいプライマリ GPG キー ID に置き換えます。 この例では、GPG キー ID は `3AA5C34371567BD2` です。
    $ git config --global user.signingkey 3AA5C34371567BD2
    または、サブキーを設定するときは、`!` サフィックスを含めます。 この例の GPG サブキー ID は `4BB6D45482678BE3` です。
    $ git config --global user.signingkey 4BB6D45482678BE3!
    1. 必要に応じて、既定ですべてのコミットに署名するように Git を構成するには、次のコマンドを入力します。
    $ git config --global commit.gpgsign true
    

    詳細については、「コミットに署名する」を参照してください。

Git へ GPG キーを伝える

コミッター ID と、GitHub.com でのアカウントに関連付けられた検証済みのメール アドレスに一致する GPG キーを使っている場合、コミットやタグへの署名を始めることができます。

コミッターアイデンティティにマッチする GPG キーを持っていない場合、既存のキーとメールアドレスを関連付ける必要があります。 詳細については、「メールと GPG キーの関連付け」を参照してください。

複数の GPG キーを持っている場合、どれを使うかを Git に伝える必要があります。

  1. [ターミナル][ターミナル][Git Bash] を開きます。 1. --gpg-sign で署名するときに別のキー形式を使うように以前、git を構成している場合、openpgp の既定形式が使用されるよう、この構成を解除してください。

    $ git config --global --unset gpg.format
    ``` 1. 公開キーと秘密キーの両方がある GPG キーを長い形式で一覧表示するには、`gpg --list-secret-keys --keyid-format=long` コマンドを使用します。 コミットやタグに署名するには秘密鍵が必要です。
    
    ```shell{:copy}
    $ gpg --list-secret-keys --keyid-format=long
    

    注: Linux での一部の GPG インストールには、代わりに既存のキーの一覧を表示するには、gpg2 --list-keys --keyid-format LONG の使用が必要となる場合があります。 この場合、git config --global gpg.program gpg2 を実行して gpg2 を使用するには、Git を構成する必要もあります。

    1. GPGキーのリストから、使いたいGPGキーIDの長い形式をコピーしてください。 この例では、GPG キー ID は `3AA5C34371567BD2` です。 ```shell{:copy} $ gpg --list-secret-keys --keyid-format=long /Users/hubot/.gnupg/secring.gpg ------------------------------------ sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10] uid Hubot ssb 4096R/4BB6D45482678BE3 2016-03-10 ``` 1. Git でプライマリ GPG 署名キーを設定するには、以下のテキストを貼り付けて、使いたいプライマリ GPG キー ID に置き換えます。 この例では、GPG キー ID は `3AA5C34371567BD2` です。
    $ git config --global user.signingkey 3AA5C34371567BD2
    または、サブキーを設定するときは、`!` サフィックスを含めます。 この例の GPG サブキー ID は `4BB6D45482678BE3` です。
    $ git config --global user.signingkey 4BB6D45482678BE3!
    1. 必要に応じて、既定ですべてのコミットに署名するように Git を構成するには、次のコマンドを入力します。
    $ git config --global commit.gpgsign true
    

    詳細については、「コミットに署名する」を参照してください。

  2. GPG キーを .bashrc スタートアップ ファイルに追加するには、次のコマンドを実行します。

    $ [ -f ~/.bashrc ] && echo 'export GPG_TTY=$(tty)' >> ~/.bashrc
    

Git に SSH キーについて知らせる

既存の SSH キーを使ってコミットとタグに署名することも、署名専用に新しいキーを生成することもできます。 詳細については、「新しい SSH キーを生成して ssh-agent に追加する」を参照してください。

注: SSH 署名の検証は、Git 2.34 以降で利用できます。 git の最新バージョンを入手するには、Git の Web サイトを参照してください。

  1. [ターミナル][ターミナル][Git Bash] を開きます。 1. コミットやタグの署名に SSH を使うよう Git を構成します。
    $ git config --global gpg.format ssh
    ``` 1. Git に SSH 署名キーを設定するには、次のテキストを貼り付けて、 **/PATH/TO/KEY.PUB** の部分を、使いたい公開キーへのパスに置き換えます。
    ```bash
    $ git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB
    

Git にX.509 キーについて知らせる

S/MIME を使ってコミットをタグに署名するには、smimesign を使います。

注: S/MIME 署名の検証は、Git 2.19 以降で利用できます。 git の最新バージョンを入手するには、Git の Web サイトを参照してください。

  1. smimesign をインストールします。
  2. [ターミナル][ターミナル][Git Bash] を開きます。
  3. コミットやタグの署名にS/MIMEを使うようGitを設定してください。 Git 2.19 以降では、git config gpg.x509.programgit config gpg.format コマンドを使用します。
  • すべてのリポジトリへの署名にS/MIMEを使うには以下のようにします。
    $ git config --global gpg.x509.program smimesign
    $ git config --global gpg.format x509
  • 1つのリポジトリへの署名にS/MIMEを使うには以下のようにします。
    $ cd PATH-TO-REPOSITORY
    $ git config --local gpg.x509.program smimesign
    $ git config --local gpg.format x509
    Git 2.18 以前では、git config gpg.program コマンドを使用します。
  • すべてのリポジトリへの署名にS/MIMEを使うには以下のようにします。
    $ git config --global gpg.program smimesign
  • 1つのリポジトリへの署名にS/MIMEを使うには以下のようにします。
    $ cd  PATH-TO-REPOSITORY
    $ git config --local gpg.program smimesign
    自分のコミッタアイデンティティにマッチにするX.509キーを使っているなら、コミットやタグへの署名を始められます。
  1. コミッター アイデンティティと一致する X.509 キーを使っていない場合は、smimesign --list-keys コマンドを使って証明書と秘密鍵の両方を持っている X.509 キーのリストを表示します。
    $ smimesign --list-keys
  2. X.509キーのリストから、使いたいX.509キーの証明書IDをコピーしてください。 この例では、証明書 ID は 0ff455a2708394633e4bb2f88002e3cd80cbd76f になります。
    $ smimesign --list-keys
                 ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f
                S/N: a2dfa7e8c9c4d1616f1009c988bb70f
          Algorithm: SHA256-RSA
           Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC
             Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US
            Subject: CN=Octocat,O=GitHub\, Inc.,L=San Francisco,ST=California,C=US
             Emails: octocat@github.com
  3. X.509署名キーをGitに設定するには、証明書IDをさきほどコピーしたものに置き換えて以下のテキストを貼り付けてください。
  • すべてのリポジトリへの署名にX.509キーを使うには以下のようにします。
    $ git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
  • 1つのリポジトリへの署名にX.509キーを使うには以下のようにします。
    $ cd  PATH-TO-REPOSITORY
    $ git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f

関連項目