Web コミット署名について
Web コミット署名を有効にした場合、GitHub Enterprise Server は、ユーザーが お使いの GitHub Enterprise Server インスタンス の Web インターフェイスで行ったコミットに、GPG を使って自動的に署名します。 GitHub Enterprise Server によって署名されたコミットは、確認済みの状態になります。 詳しくは、「コミット署名の検証について」を参照してください。
Web コミット署名を有効にし、Web コミット署名に使われる秘密キーをローテーションして、Web コミット署名を無効にすることができます。
Web コミット署名を有効にする
-
管理シェルで、PGP キーを作成します。 メール アドレスとキー ID をメモしておきます。
Bash gpg --full-generate-key --pinentry-mode=loopback
gpg --full-generate-key --pinentry-mode=loopback
- 既定のキーの種類と、有効期限のない少なくとも
4096
ビットを使用します。 - ユーザー名として
web-flow
を使用します。web-flow
が有効になっていないか使用できない場合は、新しい一意のユーザー名を使用します。 この記事の次の手順全体を通して、このユーザー名を使用してください。 - [Management Console] で定義された no-reply メール アドレスがある場合は、そのメール アドレスを使います。 ない場合は、
web-flow@my-company.com
のような任意のメール アドレスを使います。 メール アドレスは有効である必要はありません。 - PGP キーはパスフレーズで保護できません。
- 既定のキーの種類と、有効期限のない少なくとも
-
<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}')"
ghe-config "secrets.gpgverify.web-signing-key" "$(gpg --export-secret-keys -a <YOUR-KEY-ID> | awk '{printf "%s\\n", $0}')"
-
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
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
-
Web コミット署名を有効にします。
Bash ghe-config app.github.web-commit-signing-enabled true
ghe-config app.github.web-commit-signing-enabled true
-
組み込みの認証または外部認証を使って、お使いの GitHub Enterprise Server インスタンス で新しいユーザーを作成します。 詳しくは、「ID とアクセス管理について」を参照してください。
- ユーザーのユーザー名は、上記の手順 1 で PGP キーを作成するときに使用したユーザー名 (例:
web-flow
) と同じである必要があります。 - ユーザーのメール アドレスは、PGP キーに使ったものと同じアドレスでなければなりません。
- ユーザーのユーザー名は、上記の手順 1 で PGP キーを作成するときに使用したユーザー名 (例:
-
KEY-ID を PGP キー ID に置き換えて、次のコマンドを実行します。
Bash gpg --armor --export KEY-ID
gpg --armor --export KEY-ID
-
-----BEGIN PGP PUBLIC KEY BLOCK-----
で始まり、-----END PGP PUBLIC KEY BLOCK-----
で終わる PGP キーをコピーします。 -
Web コミット署名用に作成したユーザー (例:
web-flow
) として GitHub Enterprise Server にサインインします。 -
ユーザーのプロファイルに公開 PGP キーを追加します。 詳しくは、「GitHub アカウントに GPG キーを追加する」を参照してください。
注: GPG キーのリストから他の公開キーを削除しないでください。 公開キーが削除されると、対応する秘密キーで署名されたコミットは検証済みとしてマークされなくなります。
-
GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
-
[ サイト管理者] サイドバーで [Management Console] をクリックします。
-
[設定] サイドバーで [メール アドレス] をクリックします。
-
[no-reply メール アドレス] に、PGP キーに使ったものと同じメール アドレスを入力します。
注: [no-reply メール アドレス] フィールドは、お使いの GitHub Enterprise Server インスタンス のメールを有効にしてある場合にのみ表示されます。 詳しくは、「通知のためのメール設定」を参照してください。
-
[設定] サイドバーで [設定の保存] をクリックします。
注: [Management Console] に設定を保存すると、システム サービスが再起動され、ユーザーに表示されるダウンタイムが発生する可能性があります。
-
設定の実行が完了するのを待ってください。
Web コミット署名に使用される秘密キーをローテーションする
-
管理シェルで、PGP キーを作成します。 メール アドレスとキー ID をメモしておきます。
Bash gpg --full-generate-key --pinentry-mode=loopback
gpg --full-generate-key --pinentry-mode=loopback
- 既定のキーの種類と、有効期限のない少なくとも
4096
ビットを使用します。 - Web コミット署名ユーザーのユーザー名 (例:
web-flow
) を使用します。 - [Management Console] で定義されている no-reply メール アドレスを使います。これは、
web-flow
など、Web コミット署名ユーザーのメール アドレスと同じである必要があります。 - PGP キーはパスフレーズで保護できません。
- 既定のキーの種類と、有効期限のない少なくとも
-
<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}')"
ghe-config "secrets.gpgverify.web-signing-key" "$(gpg --export-secret-keys -a <YOUR-KEY-ID> | awk '{printf "%s\\n", $0}')"
-
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
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
-
KEY-ID を PGP キー ID に置き換えて、次のコマンドを実行します。
Bash gpg --armor --export KEY-ID
gpg --armor --export KEY-ID
-
-----BEGIN PGP PUBLIC KEY BLOCK-----
で始まり、-----END PGP PUBLIC KEY BLOCK-----
で終わる PGP キーをコピーします。 -
Web コミット署名用に作成したユーザー (例:
web-flow
) として GitHub Enterprise Server にサインインします。 -
ユーザーのプロファイルに公開 PGP キーを追加します。 詳しくは、「GitHub アカウントに GPG キーを追加する」を参照してください。
注: GPG キーのリストから他の公開キーを削除しないでください。 公開キーが削除されると、対応する秘密キーで署名されたコミットは検証済みとしてマークされなくなります。
Web コミット署名を無効にする
お使いの GitHub Enterprise Server インスタンス の Web コミット署名を無効にすることができます。
-
管理シェルで、次のコマンドを実行します。
Bash ghe-config app.github.web-commit-signing-enabled false
ghe-config app.github.web-commit-signing-enabled false
-
構成を適用します。
Bash ghe-config-apply
ghe-config-apply