Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となります: 2026-08-25. 廃止されたリリースはサポートされていません。 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 GitHub Enterprise Server のパフォーマンスの向上、セキュリティの向上、新機能については、「アップグレード プロセスの概要を参照してください。 アップグレードに関するサポートについては、GitHub Enterprise Support にお問い合わせください。

Web コミット署名を構成する

GitHub Enterprise Serverの Web インターフェイスで行われたコミットの自動署名を有効にすることができます。

この機能を使用できるユーザーについて

Site administrators

Web コミット署名について

Web コミット署名を有効にした場合、 GitHub Enterprise Server は自動的に GPG を使用して、ユーザーが お使いの GitHub Enterprise Server インスタンス の Web インターフェイスで行ったコミットに署名します。 GitHub Enterprise Serverによって署名されたコミットは、検証済みの状態になります。 詳しくは、「コミット署名の検証について」をご覧ください。

Web コミット署名を有効にし、Web コミット署名に使われる秘密キーをローテーションして、Web コミット署名を無効にすることができます。

永続的なコミット署名の検証について

永続的なコミット署名の検証は Web コミット署名に関連していますが、これとは別のものです。 この機能により、署名キーが変更または取り消された場合でも、コミットの検証済み状態が保持されます。

永続的なコミット署名の検証は、リポジトリのコミット履歴の長期的な整合性と信頼を維持するのに役立ちます。 ただし、ディスク使用量を最小限に抑えることが優先される環境 (特に、検証済みコミットの数が多い大規模なインストール) では無効にすることもできます。

永続的なコミット署名の検証を無効にする方法については、「永続的コミット検証の無効化」を参照してください。

Web コミット署名を有効にする

  1. 管理シェルで、PGP キーを作成します。 メール アドレスとキー ID をメモしておきます。

    Bash
    gpg --full-generate-key --pinentry-mode=loopback
    
    • 既定のキーの種類と、有効期限のない少なくとも 4096 ビットを使用します。
    • ユーザー名として web-flow を使用します。 web-flow が有効になっていないか使用できない場合は、新しい一意のユーザー名を使用します。 この記事の次の手順全体を通して、このユーザー名を使用してください。
    • [Management Console]で返信なしのメール アドレスが定義されている場合は、そのメール アドレスを使用します。 ない場合は、web-flow@my-company.com のような任意のメール アドレスを使います。 メール アドレスは有効である必要はありません。
  • PGP キーはパスフレーズで保護できません
  1. <YOUR-KEY-ID> を GPG キー ID に置き換えて、GitHub Enterprise Server の環境変数としてキーを定義します。

    Bash
    ghe-config "secrets.gpgverify.web-signing-key" "$(gpg --export-secret-keys -a <YOUR-KEY-ID> | awk '{printf "%s\\n", $0}')"
    
  2. GitHub のコミット署名サービスの設定を更新します。

    Bash
    sudo consul-template -once -template /etc/consul-templates/etc/nomad-jobs/gpgverify/gpgverify.hcl.ctmpl:/etc/nomad-jobs/gpgverify/gpgverify.hcl
     
    sudo nomad job run /etc/nomad-jobs/gpgverify/gpgverify.hcl
    
  3. Web コミット署名を有効にします。

    Bash
    ghe-config app.github.web-commit-signing-enabled true
    
  4. 組み込みの認証または外部認証を使用して、 お使いの GitHub Enterprise Server インスタンス に新しいユーザーを作成します。 詳しくは、「ID とアクセス管理の基礎」をご覧ください。

    • ユーザーのユーザー名は、上記の手順 1 で PGP キーを作成するときに使用したユーザー名 (例: web-flow) と同じである必要があります。
    • ユーザーのメール アドレスは、PGP キーに使ったものと同じアドレスでなければなりません。
  5. KEY-ID を PGP キー ID に置き換えて、次のコマンドを実行します。

    Bash
    gpg --armor --export KEY-ID
    
  6. -----BEGIN PGP PUBLIC KEY BLOCK----- で始まり、-----END PGP PUBLIC KEY BLOCK----- で終わる PGP キーをコピーします。

  7. Web コミット署名用に作成したユーザー (例: web-flow) として GitHub Enterprise Server にサインインします。

  8. ユーザーのプロファイルに公開 PGP キーを追加します。 詳しくは、「GitHub アカウントへの GPG キーの追加」をご覧ください。

    メモ

    GPG キーのリストから他の公開キーを削除しないでください。 公開キーが削除されると、対応する秘密キーで署名されたコミットは検証済みとしてマークされなくなります。

  9. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。

  10. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。

  11. [ Site admin] サイドバーで、[[Management Console]] をクリックします。

  12. [設定] サイドバーで [メール アドレス] をクリックします。

  13. [no-reply メール アドレス] に、PGP キーに使ったものと同じメール アドレスを入力します。

    メモ

    [返信なしメール アドレス] フィールドは、 お使いの GitHub Enterprise Server インスタンスの電子メールを有効にした場合にのみ表示されます。 詳しくは、「通知のためのメール設定」をご覧ください。

  14. [設定] サイドバーで [設定の保存] をクリックします。

    メモ

    [Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。

  15. 設定の実行が完了するのを待ってください。

Web コミット署名に使用される秘密キーをローテーションする

  1. 管理シェルで、PGP キーを作成します。 メール アドレスとキー ID をメモしておきます。

    Bash
    gpg --full-generate-key --pinentry-mode=loopback
    
    • 既定のキーの種類と、有効期限のない少なくとも 4096 ビットを使用します。
    • Web コミット署名ユーザーのユーザー名 (例: web-flow) を使用します。
    • [Management Console]で定義されている応答なしメール アドレスを使用します。これは、web コミット署名ユーザーの電子メール アドレスと同じにする必要があります (たとえば、web-flow)。
  • PGP キーはパスフレーズで保護できません
  1. <YOUR-KEY-ID> を GPG キー ID に置き換えて、GitHub Enterprise Server の環境変数としてキーを定義します。

    Bash
    ghe-config "secrets.gpgverify.web-signing-key" "$(gpg --export-secret-keys -a <YOUR-KEY-ID> | awk '{printf "%s\\n", $0}')"
    
  2. GitHub のコミット署名サービスの設定を更新します。

    Bash
    sudo consul-template -once -template /etc/consul-templates/etc/nomad-jobs/gpgverify/gpgverify.hcl.ctmpl:/etc/nomad-jobs/gpgverify/gpgverify.hcl
     
    sudo nomad job run /etc/nomad-jobs/gpgverify/gpgverify.hcl
    
  3. KEY-ID を PGP キー ID に置き換えて、次のコマンドを実行します。

    Bash
    gpg --armor --export KEY-ID
    
  4. -----BEGIN PGP PUBLIC KEY BLOCK----- で始まり、-----END PGP PUBLIC KEY BLOCK----- で終わる PGP キーをコピーします。

  5. Web コミット署名用に作成したユーザー (例: web-flow) として GitHub Enterprise Server にサインインします。

  6. ユーザーのプロファイルに公開 PGP キーを追加します。 詳しくは、「GitHub アカウントへの GPG キーの追加」をご覧ください。

    メモ

    GPG キーのリストから他の公開キーを削除しないでください。 公開キーが削除されると、対応する秘密キーで署名されたコミットは検証済みとしてマークされなくなります。

Web コミット署名を無効にする

お使いの GitHub Enterprise Server インスタンスの Web コミット署名を無効にすることができます。

  1. 管理シェルで、次のコマンドを実行します。

    Bash
    ghe-config app.github.web-commit-signing-enabled false
    
  2. 構成を適用します。

    Bash
    ghe-config-apply