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の製品」を参照してください。

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

HTTPS と GitHub Pages について

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

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

Warning: GitHub Pages sites are publicly available on the internet, even if the repository for the site is private. If you have sensitive data in your site's repository, you may want to remove the data before publishing. For more information, see "About repositories."

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

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

  1. GitHubで、サイトのリポジトリにアクセスしてください。

  2. リポジトリ名の下で Settings(設定)をクリックしてください。 リポジトリの設定ボタン

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

  4. [GitHub Pages] で、[Enforce HTTPS] を選択します。 [Enforce HTTPS] チェックボックス

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

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

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

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

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

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

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

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

ヒント: サイトのソースファイルでアセットが見つからない場合は、テキストエディタまたは GitHub 上で、サイトのソースファイルから 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>
画像<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>