コミット署名の検証について
コミットとタグにローカルで署名して、行った変更の根拠を他のユーザに信頼してもらうことができます。 コミットまたはタグに暗号で検証可能な 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 上で検証済みにするには、以下の手順に従ってください:
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 上で検証済みにするには、以下の手順に従ってください:
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 上で検証済みにするには、以下の手順に従ってください:
公開鍵を GitHub Enterprise Serverにアップロードする必要はありません。