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 by default, even if the repository for the site is private or internal. プロジェクトサイトがGitHub Enterprise Cloudを使用するOrganizationが所有するプライベートもしくはインターナルリポジトリから公開されるなら、そのサイトのアクセス制御を管理できます。 In an enterprise with managed users, all GitHub Pages sites are privately published. Otherwise, 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" and "Changing the visibility of your GitHub Pages site."

Note: RFC3280 states that the maximum length of the common name should be 64 characters. Therefore, the entire domain name of your GitHub Pages site must be less than 64 characters long for a certificate to be successfully created.

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

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

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

  3. 左のサイドバーでPages(ページ)をクリックしてください。 左のサイドバーのPageタブ

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

Troubleshooting certificate provisioning ("Certificate not yet created" error")

When you set or change your custom domain in the Pages settings, an automatic DNS check begins. This check determines if your DNS settings are configured to allow GitHub to obtain a certificate automatically. If the check is successful, GitHub queues a job to request a TLS certificate from Let's Encrypt. On receiving a valid certificate, GitHub automatically uploads it to the servers that handle TLS termination for Pages. When this process completes successfully, a check mark is displayed beside your custom domain name.

The process may take some time. If the process has not completed several minutes after you clicked Save, try clicking Remove next to your custom domain name. Retype the domain name and click Save again. This will cancel and restart the provisioning process.

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

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>