Skip to main content

コミット署名の検証について

GPG、SSH、または S/MIME を使用して、ローカルでタグとコミットに署名できます。 これらのタグやコミットは GitHub Enterprise Server で検証済みとしてマークされているため、他のユーザーはその変更が信頼できるソースからのものであると確信できます。

コミット署名の検証について

コミットとタグにローカルで署名して、行った変更の根拠を他のユーザに信頼してもらうことができます。 コミットまたはタグに暗号で検証可能な GPG、SSH、または S/MIME 署名がある場合、GitHub Enterprise Server はコミットまたはタグに [検証済み] のマークを付けます。

リポジトリのコミット リスト内のコミットのスクリーンショット。 [検証済み] がオレンジ色の枠線で強調表示されています。

コミットまたはタグに検証できない署名が含まれている場合、GitHub Enterprise Server ではそのコミットまたはタグを [未検証] としてマークします。

ほとんどの個々のユーザーにとって、コミットの署名には GPG または SSH が最適です。 通常、S/MIME 署名は、大規模な組織のコンテキストで必要です。 SSH 署名は最も簡単に生成できます。 既存の認証キーを GitHub Enterprise Server にアップロードして、署名キーとして使用することもできます。 GPG 署名キーの生成は、SSH キーを生成するよりも複雑ですが、GPG には SSH にはない機能があります。 GPG キーは、使用されなくなったときに有効期限が切れるか、取り消すことができます。 GitHub Enterprise Server には、キーがセキュリティ侵害としてマークされていない限り、[検証済み] などのキーで署名されたコミットが表示されます。 SSH キーにはこの機能はありません。

リベースとマージの署名の検証

pull request で Rebase と Merge オプションを使用する場合は、ヘッド ブランチのコミットがコミット署名の検証なしでベース ブランチに追加されることに注意することが重要です。 このオプションを使用すると、元のコミットのデータとコンテンツを使用して、GitHub によって変更されたコミットが作成されます。 つまり、GitHub は、このコミットを本当に作成していないため、汎用システム ユーザーとして署名することはできません。 GitHub では、コミッターの秘密署名キーにアクセスできないため、ユーザーの代わりにコミットに署名できません。

これを回避するには、ローカルでリベースとマージを行い、変更を pull request のベース ブランチにプッシュします。

詳しくは、「GitHub上のマージ方法について」を参照してください。

リポジトリ管理者は、ブランチでコミット署名を必須として、署名および検証されていないすべてのコミットをブロックできます。 詳しくは、「保護されたブランチについて」を参照してください。

GitHub Enterprise Server上の署名されたコミットあるいはタグの検証ステータスをチェックして、コミットの署名が検証されない理由を見ることができます。 詳しくは、「コミットおよびタグの署名の検証ステータスを確認する」を参照してください。

サイト管理者が Web コミット署名を有効にしている場合、GitHub Enterprise Server は GPG を自動的に使用して、Web インターフェイスで行ったコミットに署名します。 GitHub Enterprise Server によって署名されたコミットは、確認済みの状態になります。 https://HOSTNAME/web-flow.gpg で入手可能な公開キーを使用して、署名をローカルで確認できます。 詳しくは、「Web コミット署名を構成する」を参照してください。

GPG コミット署名の検証

自分で生成した GPG キーで、GPG を使ってコミットに署名できます。

GitHub Enterprise Server では、OpenPGP ライブラリを使用することで、ローカルで署名されたコミットとタグが、お使いの GitHub Enterprise Server インスタンス でアカウントに追加した公開鍵に対して暗号化で検証可能であることを確認します。

GPG を使ってコミットに署名し、それらのコミットを GitHub Enterprise Server 上で検証済みにするには、以下の手順に従ってください:

  1. 既存の GPG キーがあるかチェックする
  2. 新しい GPG キーを生成する
  3. GitHub アカウントに GPG キーを追加する
  4. Git へ署名キーを伝える
  5. コミットに署名する
  6. タグに署名する

SSH コミット署名の検証

SSH を使うと、自分で生成した SSH キーを使ってコミットに署名できます。 詳細については、user.Signingkey に関する Git リファレンス ドキュメントを参照してください。 GitHub Enterprise Server で認証するために SSH キーを既に使用している場合は、署名キーとして使用するために同じキーをもう一度アップロードすることもできます。 アカウントに追加できる署名キーの数に制限はありません。

GitHub Enterprise Server では、オープンソース Ruby ライブラリの ssh_data を使用することで、ローカルで署名されたコミットとタグが、お使いの GitHub Enterprise Server インスタンス でアカウントに追加した公開鍵に対して暗号化で検証可能であることを確認します。

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

SSH を使ってコミットに署名し、それらのコミットを GitHub Enterprise Server 上で検証済みにするには、以下の手順に従ってください:

  1. 既存の SSH キーを確認する
  2. 新しい SSH キーを生成する
  3. GitHub アカウントに SSH 署名キーを追加する
  4. Git へ署名キーを伝える
  5. コミットに署名する
  6. タグに署名する

S/MIME コミット署名の検証

S/MIME を使い、自分の Organization で発行した X.509 キーを用いてコミットに署名できます。

GitHub Enterprise Server では、Mozilla ブラウザーで使用されているのと同じ信頼ストアである Debian ca-certificates パッケージを使用して、ローカル署名されたコミットとタグが信頼されたルート証明書の公開キーに対して暗号化で検証可能であることを確認します。

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

S/MIME を使ってコミットに署名し、それらのコミットを GitHub Enterprise Server 上で検証済みにするには、以下の手順に従ってください:

  1. Git へ署名キーを伝える
  2. コミットに署名する
  3. タグに署名する

公開鍵を GitHub Enterprise Serverにアップロードする必要はありません。

参考資料