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"を参照してください。
警告: HTTPS 接続をロードバランサでターミネートしている場合、ロードバランサからの GitHub Enterprise Server へのリクエストも HTTPS を使わなければなりません。 接続の HTTP へのダウングレードはサポートされません。
ユーザが2要素認証のFIDO U2Fを利用できるようにするには、インスタンスでTLSを有効化しなければなりません。 詳しい情報については「2 要素認証の設定」を参照してください。
必要な環境
プロダクションでTLSを利用するには、暗号化されていないPEMフォーマットで、信頼済みの証明書認証局によって署名された証明書がなければなりません。
また、証明書には"Subdomain Isolationの有効化"のリストにあるサブドメインに設定されたSubject Alternative Namesが必要で、中間証明書認証局によって署名されたものであれば、完全な証明書チェーンを含んでいる必要があります。 詳しい情報についてはWikipediaの"Subject Alternative Name"を参照してください。
ghe-ssl-generate-csr
コマンドを使用すれば、インスタンス用の証明書署名要求 (CSR) を生成できます。 詳細は「コマンドラインユーティリティ」を参照してください。
カスタムのTLS証明書のアップロード
-
GitHub Enterprise Serverの管理アカウントから、任意のページの右上にあるをクリックしてください。
-
左のサイドバーでManagement Consoleをクリックしてください。
-
左のサイドバーでPrivacy(プライバシー)をクリックしてください。
-
TLS only (recommended)(TLSのみー推奨)を選択してください。
-
[TLS Protocol support] で、許可するプロトコルを選択します。
-
"Certificate(証明書)"の下でChoose File(ファイルの選択)をクリックし、インストールしたいTLS証明書もしくは証明書チェーン(PEMフォーマット)を選択してください。 このファイルは通常、.pem、.crt、.cer といった拡張子を持ちます。
-
"Unencrypted key(暗号化されていない鍵)"の下でChoose File(ファイルの選択)をクリックし、インストールするTLS鍵(PEMフォーマット)を選択してください。 このファイルは通常.keyという拡張子を持ちます。
警告: このTLS鍵はパスフレーズを持っていてはなりません。 詳しい情報については"キーファイルからのパスフレーズの除去"を参照してください。
-
左のサイドバーの下でSave settings(設定の保存)をクリックしてください。
-
設定が完了するのを待ってください。
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接続ができるようになっていなければなりません。
- GitHub Enterprise Serverの管理アカウントから、任意のページの右上にあるをクリックしてください。
- 左のサイドバーでManagement Consoleをクリックしてください。
- 左のサイドバーでPrivacy(プライバシー)をクリックしてください。
- TLS only (recommended)(TLSのみー推奨)を選択してください。
- Enable automation of TLS certificate management using Let's Encrypt(Let's Encryptを使った自動的なTLS証明書管理の有効化)を選択してください。
- 左のサイドバーの下でSave settings(設定の保存)をクリックしてください。
- 設定が完了するのを待ってください。
- 左のサイドバーでPrivacy(プライバシー)をクリックしてください。
- Request TLS certificate(TLS証明書のリクエスト)をクリックしてください。
- Save configuration(設定の保存)をクリックしてください。