Transport Layer Securityについて
SSL に代わる TLS は、GitHub Enterprise Server の初回起動時に有効になり、自己署名証明書で設定されます。 自己署名証明書は Web ブラウザや Git クライアントから信頼されていないため、TLS を無効にするか、Let's Encrypt などの信頼できる機関によって署名された証明書をアップロードするまで、これらのクライアントは証明書の警告を報告します。
SSL が有効な場合、GitHub Enterprise Server アプライアンスは HTTP Strict Transport Security ヘッダーを送信します。 TLSを無効化すると、ブラウザはHTTPへのプロトコルダウングレードを許さないので、ユーザはアプライアンスにアクセスできなくなります。 詳しくは、Wikipedia の「HTTP Strict Transport Security (HSTS)」をご覧ください。
警告: ロード バランサーの HTTPS 接続を終了する場合、ロード バランサーから GitHub Enterprise Server への要求も HTTPS を使用する必要があります。 接続の HTTP へのダウングレードはサポートされません。
ユーザが2要素認証のFIDO U2Fを利用できるようにするには、インスタンスでTLSを有効化しなければなりません。 詳しくは、「2 要素認証を設定する」を参照してください。
前提条件
プロダクションでTLSを利用するには、暗号化されていないPEMフォーマットで、信頼済みの証明書認証局によって署名された証明書がなければなりません。 内部認証機関によって署名された証明書を使うには、ルート証明書と任意の中間証明書をインストールする必要があります。 詳しくは、「TLS エラーのトラブルシューティング」を参照してください。
証明書には、「Subdomain Isolationの有効化」の一覧にあるサブドメイン用に構成されたサブジェクトの別名も必要であり、中間証明機関によって署名されている場合は完全な証明書チェーンを含める必要があります。 詳しくは、Wikipedia の「サブジェクトの別名」をご覧ください。
ghe-ssl-generate-csr
コマンドを使って、インスタンス用の証明書署名要求 (CSR) を生成できます。 詳しくは、「コマンド ライン ユーティリティ」を参照してください。
キーは RSA キーでなければならず、パスフレーズは使用できません。 詳細については、「TLS エラーのトラブルシューティング」を参照してください。
カスタムのTLS証明書のアップロード
警告: TLS を構成すると、お使いの GitHub Enterprise Server インスタンス に短いダウンタイムが発生します。
-
GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
-
[ サイト管理者] サイドバーで [Management Console] をクリックします。
-
[設定] サイドバーで [プライバシー] をクリックします。
-
[TLS のみ] (推奨) を選択します。
-
[TLS Protocol support] で、許可するプロトコルを選択します。
-
[証明書] の下の [ファイルの選択] をクリックし、インストールする TLS 証明書または証明書チェーン (PEM 形式) を選択します。 このファイルの拡張子は、通常、 .pem、 .crt、または .cer です。
-
[暗号化されていないキー] で [ファイルの選択] をクリックし、インストールする RSA キー (PEM 形式) を選択します。 通常、このファイルの拡張子は .key です。
-
[設定] サイドバーで [設定の保存] をクリックします。
注: [Management Console] に設定を保存すると、システム サービスが再起動され、ユーザーに表示されるダウンタイムが発生する可能性があります。
-
設定の実行が完了するのを待ってください。
Let's Encryptのサポートについて
Let's Encryptは公開の証明書認証者で、ACMEプロトコルを使ってブラウザが信頼するTLS証明書を、無料で自動的に発行してくれます。 アプライアンスのためのLet's Encryptの証明書は、手動のメンテナンスを必要とせず自動的に取得及び更新できます。
Let's Encryptの自動化を利用するには、アプライアンスをHTTP経由で公にアクセスできるようなホスト名で設定していなければなりません。 アプライアンスは、アウトバウンドのHTTPS接続ができるようになっていなければなりません。
Let's Encrypt を使って TLS 証明書管理の自動化を有効にすると、お使いの GitHub Enterprise Server インスタンス は Let's Encrypt のサーバーに接続して証明書を取得します。 証明書を更新するには、Let's EncryptのサーバはインバウンドのHTTPリクエストで設定されたドメイン名の制御を検証しなければなりません。
また、お使いの GitHub Enterprise Server インスタンス で ghe-ssl-acme
コマンド ライン ユーティリティを使って、Let's Encrypt の証明書を自動的に生成することもできます。 詳しくは、「コマンド ライン ユーティリティ」を参照してください。
Let's Encryptを使ったTLSの設定
Let's Encryptの自動化を利用するには、アプライアンスをHTTP経由で公にアクセスできるようなホスト名で設定していなければなりません。 アプライアンスは、アウトバウンドのHTTPS接続ができるようになっていなければなりません。
警告: TLS を構成すると、お使いの GitHub Enterprise Server インスタンス に短いダウンタイムが発生します。
-
GitHub Enterprise Server の管理アカウントから、任意のページの右上隅で をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。
-
[ サイト管理者] サイドバーで [Management Console] をクリックします。
-
[設定] サイドバーで [プライバシー] をクリックします。
-
[TLS のみ] (推奨) を選択します。
-
[Let's Encrypt を使用した TLS 証明書管理の自動化を有効にする] を選びます。
-
[設定] サイドバーで [設定の保存] をクリックします。
注: [Management Console] に設定を保存すると、システム サービスが再起動され、ユーザーに表示されるダウンタイムが発生する可能性があります。
-
設定の実行が完了するのを待ってください。
-
[設定] サイドバーで [プライバシー] をクリックします。
-
[TLS 証明書の要求] をクリックします。
-
[状態] が "STARTED" から "DONE" に変わるのを待ちます。
-
[Save configuration] をクリックします。