Skip to main content

TLSの設定

信頼された証明機関によって署名された証明書を使用できるように、 お使いの GitHub Enterprise Server インスタンス でトランスポート層セキュリティ (TLS) を構成できます。

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 へのダウングレードはサポートされません。

ユーザーが FIDO U2F を 2 要素認証に使用したり、GitHub Pagesを使用してサイトGitHub Actions展開したりできるようにするには、インスタンスに対して TLS を有効にする必要があります。 詳しくは、「2 要素認証を設定する」をご覧ください。

前提条件

プロダクションでTLSを利用するには、暗号化されていないPEMフォーマットで、信頼済みの証明書認証局によって署名された証明書がなければなりません。 内部認証機関によって署名された証明書を使うには、ルート証明書と任意の中間証明書をインストールする必要があります。 詳しくは、「TLS エラーのトラブルシューティング」をご覧ください。

証明書には、「サブドメインの分離を有効化する」の一覧にあるサブドメイン用に構成されたサブジェクトの別名も必要であり、中間証明機関によって署名されている場合は完全な証明書チェーンを含める必要があります。 詳細については、Wikipedia の「サブジェクトの別名」を参照してください。

ghe-ssl-generate-csr コマンドを使って、インスタンス用の証明書署名要求 (CSR) を生成できます。 詳しくは、「コマンド ライン ユーティリティ」をご覧ください。

キーは RSA キーでなければならず、パスフレーズは使用できません。 詳しくは、「TLS エラーのトラブルシューティング」をご覧ください。

カスタムのTLS証明書のアップロード

警告

TLS を構成すると、お使いの GitHub Enterprise Server インスタンス に短いダウンタイムが発生します。

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

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

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

  4. [Settings] サイドバーで [Privacy] をクリックして、[Private mode] をオフにします。

  5. [TLS のみ] (推奨) を選択します。

  6. [TLS Protocol support] で、許可するプロトコルを選択します。

  7. [証明書] の下の [ファイルの選択] をクリックし、インストールする TLS 証明書または証明書チェーン (PEM 形式) を選択します。 このファイルの拡張子は、通常、 .pem.crt、または .cer です。

  8. [暗号化されていないキー] で [ファイルの選択] をクリックし、インストールする RSA キー (PEM 形式) を選択します。 通常、このファイルの拡張子は .key です。

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

    メモ

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

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

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リクエストで設定されたドメイン名の制御を検証しなければなりません。

ghe-ssl-acmeのお使いの GitHub Enterprise Server インスタンスコマンド ライン ユーティリティを使用して、Let's Encrypt 証明書を自動的に生成することもできます。 詳しくは、「コマンド ライン ユーティリティ」をご覧ください。

Let's Encryptを使ったTLSの設定

Let's Encryptの自動化を利用するには、アプライアンスをHTTP経由で公にアクセスできるようなホスト名で設定していなければなりません。 アプライアンスは、アウトバウンドのHTTPS接続ができるようになっていなければなりません。

警告

TLS を構成すると、お使いの GitHub Enterprise Server インスタンス に短いダウンタイムが発生します。

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

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

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

  4. [Settings] サイドバーで [Privacy] をクリックして、[Private mode] をオフにします。

  5. [TLS のみ] (推奨) を選択します。

  6. [Let's Encrypt を使用した TLS 証明書管理の自動化を有効にする] を選びます。

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

    メモ

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

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

  9. [Settings] サイドバーで [Privacy] をクリックして、[Private mode] をオフにします。

  10. [TLS 証明書の要求] をクリックします。

  11. [状態] が "STARTED" から "DONE" に変わるのを待ちます。

    [TLS 証明書の要求] ダイアログのスクリーンショット。 ダイアログの上部には、"STATUS: DONE" がオレンジ色のアウトラインで強調表示されています。

  12. [Save configuration] をクリックします。

Let's Encrypt を使用した TLS のトラブルシューティング

LET's Encrypt から TLS 証明書に影響する問題のトラブルシューティングを行うことができます。

エラー: "セキュリティ エラーがリソースの読み込みを妨げている"

場合によっては、エンド ユーザーは、 お使いの GitHub Enterprise Server インスタンス のサービスのページがブラウザーの開発者ツールで次のエラーで応答することを報告することがあります。

Security error prevented the resource from being loaded

これらのエラーを解決するには、証明書を再発行して Let's Encrypt 証明書のサブジェクト代替名 (SAN) を更新する必要があります。 インスタンスの証明書を交換するには、ユーザー側のダウンタイムが必要です。

  1. 今後のダウンタイムをユーザーに伝え、メインテナント モードを有効にすることを検討します。 詳細については、次の記事を参照してください。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Let's Encryptを無効にするには、以下のコマンドを実行します。

    Shell
    ghe-ssl-acme -d
    
  3. Let's Encrypt の既存の設定をクリアするには、次のコマンドを実行します。

    Shell
    ghe-ssl-acme -x
    
  4. Let's Encrypt から新しい証明書を要求してインストールするには、次のコマンドを実行します。

    Shell
    ghe-ssl-acme -e
    
  5. 構成を適用するには、次のコマンドを実行します。

    メモ

    構成の実行中に、お使いの GitHub Enterprise Server インスタンス 上のサービスが再起動する可能性があり、これによりユーザーに短時間のダウンタイムが発生する場合があります。

    Shell
    ghe-config-apply
    
  6. 設定の実行が完了するのを待ってください。

  7. ユーザー メッセージまたはメインテナント モードを構成した場合は、メッセージを削除し、メインテナント モードを無効にします。