Skip to main content

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

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

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

Site administrators can configure web commit signing for お使いの GitHub Enterprise Server インスタンス.

Web コミット署名について

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

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

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

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

    Bash
    gpg --full-generate-key --pinentry-mode=loopback
    
    • 既定のキーの種類と、有効期限のない少なくとも 4096 ビットを使用します。
    • ユーザー名として web-flow を使用します。 web-flow が有効になっていないか使用できない場合は、新しい一意のユーザー名を使用します。 この記事の次の手順全体を通して、このユーザー名を使用してください。
    • [Management Console] で定義された no-reply メール アドレスがある場合は、そのメール アドレスを使います。 ない場合は、web-flow@my-company.com のような任意のメール アドレスを使います。 メール アドレスは有効である必要はありません。
    • PGP キーはパスフレーズで保護できません
  2. <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}')"
    
  3. GitHub Enterprise Server のコミット署名サービスの設定を更新します。

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

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

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

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

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

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

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

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

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

  12. [ サイト管理者] サイドバーで [Management Console] をクリックします。

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

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

    注: [no-reply メール アドレス] フィールドは、お使いの GitHub Enterprise Server インスタンス のメールを有効にしてある場合にのみ表示されます。 詳しくは、「通知のためのメール設定」を参照してください。

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

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

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

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

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

    Bash
    gpg --full-generate-key --pinentry-mode=loopback
    
    • 既定のキーの種類と、有効期限のない少なくとも 4096 ビットを使用します。
    • Web コミット署名ユーザーのユーザー名 (例: web-flow) を使用します。
    • [Management Console] で定義されている no-reply メール アドレスを使います。これは、web-flow など、Web コミット署名ユーザーのメール アドレスと同じである必要があります。
    • PGP キーはパスフレーズで保護できません
  2. <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}')"
    
  3. GitHub Enterprise Server のコミット署名サービスの設定を更新します。

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

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

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

  7. ユーザーのプロファイルに公開 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