Main page

HTTPS для Github Pages через CloudFare


https cloudflare russian

Многие хотят видеть у своего сайта зеленый значок защищенного соединения (https). К сожалению, существет ряд причин по которым это бывает сделать довольно не просто. Например, GitHub Pages до сих пор не поддерживают HTTPS для кастомных доменов (Add HTTPS support to Github Pages - это неофициальный багтрекинг Github Pages).

Есть 2 возможности обойти это ограничение:

О втором варианте я и хочу рассказать в этой заметке.

Подразумевается, что вы знакомы с Githab Pages и знаете как хостить там свой сайт.

В качестве бонуса, сайт будет загружаться быстрее (CloudFlare кэширует ваш сайт и поддерживает новые протоколы SPDY и IPv6).

С другой стороны, данное решение имеет некоторые ограничения и не подходит для ряда случаев:

Установка

  1. Создаем аккаунт на CloudFlare

  2. Проходим по шагам настройки CloudFlare для вашего домена

  3. Делелегируем DNS нейм сервера на CloudFlare. После чего вы получите возможность управлять настройками DNS вашего домена из CloudFlare. Для Github Pages вам нужно иметь корневую CNAME запись, которая ссылается на домен вида <your_github_alias>.github.io.

  4. Включаем SSL опцией Flexible SSL в настройках. Если вы не используете кастомный домен, то для лучшей защищенности можно выбрать опцию Full(Strict). Ждем в течение 24 часов, пока применятся изменения в DNS и CloudFlare сгенерирует SSL сертификат для домена.

  5. После выполнения шагов ваш домен будет доступен через CloudFlare как по защищенному так и по незащищенному соединению.

  6. Настраиваем редирект на https:

    • из CloudFlare консоли переходим в Page Rules
    • добавляем URL pattern https://yourwebsite/*
    • выбираем Always use HTTPS
    • Нажимаем Add Rule
  7. Наслаждаемся результатом и идем пить кофе.

P.S. В связи с тем, что CloudFlare кеширует изменения на вашем сайте, они не могут мгновенно отображаться. Тем ни менее, вы всегда можете перейти в консоль CloudFlare и перевести домен в режиме разработчика, который временно отключит кэширование.