Skip to main content

HTTPS で GitHub Pages サイトを保護する

HTTPS は、他者によるあなたのサイトへのトラフィックの詮索や改ざんを防ぐ暗号化のレイヤーを追加します。 透過的に HTTP リクエストを HTTPS にリダイレクトするために、あなたの GitHub Pages サイトに HTTPS を強制できます。

GitHub Pagesは、GitHub Free及びOrganizationのGitHub Freeのパブリックリポジトリ、GitHub Pro、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Serverのパブリック及びプライベートリポジトリで利用できます。 詳細については、「GitHub's products」を参照してください。

リポジトリの管理者権限があるユーザは、GitHub Pages サイトに強制的に HTTPS を指定できます。

HTTPS と GitHub Pages について

カスタムドメインが正しく設定されたサイトを含めたすべての GitHub Pages サイトは、HTTPS や HTTPS 強制をサポートします。 カスタム ドメインの詳しい情報については、「カスタム ドメインと GitHub Pages について」とカスタムドメインと GitHub Pages のトラブルシューティング」を参照してください。

GitHub Pages サイトは、パスワードやクレジットカード番号といった機密情報のやりとりに使うべきではありません。

警告: エンタープライズが Enterprise Managed Users を使用しない限り、サイトのリポジトリがプライベートまたは内部であっても、GitHub Pages サイトは既定でインターネット上で一般公開されます。 サイトのアクセス制御を管理することで、サイトをプライベートで公開できます。 それ以外の場合、サイトのリポジトリにセンシティブなデータがあるなら、公開前にそのデータを取り除くのが良いでしょう。 詳細については、「リポジトリについて」および「GitHub Pages サイトの可視性の変更」を参照してください。

注: RFC3280 では、共通名の長さは最大 64 文字とされています。 したがって、証明書が正常に作成されるようにするには、GitHub Pagesサイトのドメイン名全体の長さは64文字未満でなければなりません。

あなたの GitHub Pages サイトに HTTPS を強制する

  1. GitHub Enterprise Cloudで、サイトのリポジトリにアクセスしてください。 1. リポジトリ名の下の [ 設定] をクリックします。 リポジトリの設定ボタン

  2. In the "Code and automation" section of the sidebar, click Pages.

  3. 「GitHub Pages」で、 [HTTPS の適用] を選択します。 [HTTPS の適用] チェックボックス

証明書プロビジョニングのトラブルシューティング("Certificate not yet created" error")

Pagesの設定でカスタムドメインを設定もしくは変更した場合、自動DNSチェックが開始されます。 このチェックは、DNS設定がGitHubによる自動的な証明書の取得を許可するように設定されているかを判断します。 チェックが正常に終わったら、GitHub によって、[Let's Encrypt] から TLS 証明書をリクエストするジョブがキューイングされます。 有効な証明書を受信すると、GitHubは自動的にそれをPagesのTLSターミネーションを処理するサーバーにアップロードします。 このプロセスが正常に終了すると、カスタムドメイン名の横にチェックマークが表示されます。

このプロセスには多少の時間がかかることがあります。 [保存] をクリックしてから数分経ってもプロセスが完了しない場合は、カスタム ドメイン名の横にある [削除] をクリックしてみてください。 ドメイン名を再入力し、 [保存] をもう一度クリックします。 これでプロビジョニングのプロセスがキャンセルされ、再起動されます。

混在したコンテンツの問題を解決する

GitHub Pages サイトで HTTPS を有効にしているのに、サイトの HTML が HTTP 経由で画像、CSS、または JavaScript を引き続き参照している場合、サイトは "混在したコンテンツ" を提供しています。 混在したコンテンツを提供することで、サイトのセキュリティが下がり、アセットの読み込みに問題が生じる場合があります。

サイトでのコンテンツの混在を解消するには、サイトの HTML で http://https:// に変更して、すべてのアセットが HTTPS 経由で提供されるようにしてください。

アセットは通常、以下の場所にあります。

  • サイトで Jekyll を使っている場合、HTML ファイルはおそらく _layouts フォルダーにあります。
  • CSS は通常、HTML ファイルの <head> セクションにあります。
  • JavaScript は通常、<head> セクションか、</body> を閉じるタグの直前にあります。
  • 画像は通常、<body> セクションにあります。

ヒント: サイトのソース ファイルにアセットが見つからない場合は、テキスト エディターか GitHub Enterprise Cloud で、サイトのソース ファイルを http で検索してください。

HTML ファイルで参照されているアセットの例

資産の種類HTTPHTTPS
CSS<link rel="stylesheet" href="http://example.com/css/main.css"><link rel="stylesheet" href="https://example.com/css/main.css">
JavaScript<script type="text/javascript" src="http://example.com/js/main.js"></script><script type="text/javascript" src="https://example.com/js/main.js"></script>
Image<a href="http://www.somesite.com"><img src="http://www.example.com/logo.jpg" alt="Logo"></a><a href="https://www.somesite.com"><img src="https://www.example.com/logo.jpg" alt="Logo"></a>