Skip to main content

Защита сайта GitHub Pages с помощью HTTPS

Протокол HTTPS добавляет уровень шифрования, который не позволяет другим пользователям перехватывать или изменять трафик между вашим сайтом и его пользователями. Вы можете потребовать использование протокола HTTPS для сайта GitHub Pages, и тогда все HTTP-запросы будут прозрачно перенаправляться на HTTPS.

Кто может использовать эту функцию?

GitHub Pages доступен в общедоступных репозиториях с GitHub Free и GitHub Free для организаций, а также в общедоступных и частных репозиториях с GitHub Pro, GitHub Team, GitHub Enterprise Cloudи GitHub Enterprise Server. Дополнительные сведения см. в разделе "Планы GitHub".

GitHub Pages теперь использует GitHub Actions для выполнения сборки Jekyll. При использовании ветви в качестве источника сборки GitHub Actions необходимо включить в репозитории, если вы хотите использовать встроенный рабочий процесс Jekyll. Кроме того, если GitHub Actions недоступен или отключен, добавление .nojekyll файла в корень исходной ветви будет обойти процесс сборки Jekyll и развернуть содержимое напрямую. Дополнительные сведения о включении GitHub Actionsсм. в разделе "Управление параметрами GitHub Actions для репозитория".

Пользователи с разрешениями администратора для репозитория могут применять протокол HTTPS для сайта GitHub Pages.

Сведения о HTTPS и GitHub Pages

Все сайты GitHub Pages, включая сайты, которые правильно настроены с помощью личного домена, поддерживают HTTPS и принудительное применение HTTPS. Дополнительные сведения о пользовательских доменах см. в разделе [AUTOTITLE и Сведения о личных доменах и страницах GitHub](/pages/configuring-a-custom-domain-for-your-github-pages-site/troubleshooting-custom-domains-and-github-pages#https-errors).

Сайты GitHub Pages не должны использоваться для конфиденциальных транзакций, таких как отправка паролей или номеров кредитных карт.

Warning

GitHub Pages сайты общедоступны в Интернете, даже если репозиторий для сайта является частным (если ваш план или организация разрешает его). Если в репозитории вашего сайта есть конфиденциальные данные, удалите их перед публикацией. Дополнительные сведения см. в разделе «Сведения о репозиториях».

Note

RFC3280 указывает, что максимальная длина общего имени должна составлять 64 символа. Таким образом, для успешного создания сертификата все доменное имя сайта GitHub Pages должно быть меньше 64 символов.

Принудительное применение протокола HTTPS для сайта GitHub Pages

  1. В GitHubперейдите в репозиторий сайта.

  2. Под именем репозитория щелкните Settings. Если вкладка "Параметры" не отображается, выберите раскрывающееся меню и нажмите кнопку "Параметры".

    Снимок экрана: заголовок репозитория с вкладками. Вкладка "Параметры" выделена темно-оранжевым контуром.

  3. В разделе "Код и автоматизация" боковой панели щелкните Pages.

  4. В разделе "GitHub Pages" выберите Применить HTTPS.

Устранение неполадок при подготовке сертификатов (ошибка "Сертификат еще не создан")

При настройке или изменении личного домена в параметрах страниц начинается автоматическая проверка DNS. Эта проверка определяет, настроены ли параметры DNS, чтобы разрешить GitHub получать сертификат автоматически. Если проверка выполнена успешно, GitHub помещает задание в очередь для запроса сертификата TLS из Let's Encrypt. При получении допустимого сертификата GitHub автоматически отправляет его на серверы, обрабатывающие завершение сеанса TLS для страниц. После успешного завершения этого процесса рядом с именем личного домена отображается флажок.

Процесс может занять некоторое время. Если процесс не завершился в течение нескольких минут после нажатия кнопки Сохранить, попробуйте нажать кнопку Удалить рядом с именем личного домена. Повторно введите доменное имя и нажмите кнопку Сохранить еще раз. Это приведет к отмене и перезапуску процесса подготовки.

Устранение проблем со смешанным содержимым

Если вы включаете HTTPS для сайта GitHub Pages, но код HTML сайта по-прежнему ссылается на изображения, каскадные таблицы стилей или JavaScript по протоколу HTTP, это означает, что ваш сайт обслуживает смешанное содержимое. Обслуживание смешанного содержимого может сделать сайт менее безопасным и привести к проблемам с загрузкой ресурсов.

Чтобы удалить смешанное содержимое сайта, обеспечьте, чтобы все ресурсы обслуживались по протоколу HTTPS, изменив http:// на https:// в HTML-коде сайта.

Ресурсы обычно находятся в следующих расположениях:

  • Если ваш сайт использует Jekyll, то HTML-файлы, скорее всего, находятся в папке _layouts.
  • Каскадные таблицы стилей обычно находятся в разделе <head> HTML-файла.
  • JavaScript обычно находится в разделе <head> или непосредственно перед закрывающим тегом </body>.
  • Изображения часто находятся в разделе <body>.

Tip

Если вы не можете найти ресурсы в исходных файлах сайта, попробуйте найти исходные файлы http сайта в текстовом редакторе или GitHub.

Примеры ресурсов, на которые ссылается 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>

Проверка конфигурации DNS

В некоторых случаях сертификат HTTPS не сможет быть создан из-за конфигурации DNS личного домена. Это может быть вызвано дополнительными записями DNS или записями, не указывающими на IP-адреса для GitHub Pages.

Чтобы убедиться, что сертификат HTTPS создается правильно, рекомендуется использовать следующие конфигурации. Любые дополнительные A``AAAA``ALIAS``ANAME , записи с @ узлом или записи, указывающие на www поддомен или CNAME другой настраиваемый поддомен, который вы хотите использовать с GitHub Pages может предотвратить создание сертификата HTTPS.

СценарийТипы записей DNSDNS-имя записиЗначения записи DNS
Вершинный домен
(example.com)
A@185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
Вершинный домен
(example.com)
AAAA@2606:50c0:8000::153
2606:50c0:8001::153
2606:50c0:8002::153
2606:50c0:8003::153
Вершинный домен
(example.com)
ALIAS или ANAME@USERNAME.github.io или
ORGANIZATION.github.io
Поддомен
(www.example.com,
blog.example.com)
CNAMESUBDOMAIN.example.com.USERNAME.github.io или
ORGANIZATION.github.io