跳至主要内容

使用 HTTPS 保护您的 GitHub Pages 站点

HTTPS 增加了一层加密,可防止他人窥探或篡改您站点的流量。您可以对 GitHub Pages 站点强制使用 HTTPS,以透明地将所有 HTTP 请求重定向到 HTTPS。

谁可以使用此功能?

GitHub Pages 在公共仓库中可使用 GitHub Free 和组织的 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 的问题

自 2016 年 6 月 15 日之后创建并使用 github.io 域名的 GitHub Pages 站点会自动通过 HTTPS 提供服务。

不应将 GitHub Pages 站点用于发送密码或信用卡号等敏感交易。

警告

GitHub Pages 站点在互联网上公开可访问,即使站点的仓库是私有的(前提是您的计划或组织允许)。如果您的站点仓库中包含敏感数据,您可能希望在发布前将其移除。更多信息,请参阅 关于仓库

注意

RFC3280 规定通用名称(Common Name)的最大长度应为 64 个字符。因此,您的 GitHub Pages 站点的完整域名必须少于 64 个字符,才能成功创建证书。

为您的 GitHub Pages 站点强制使用 HTTPS

  1. 在 GitHub 上,前往您站点的仓库。

  2. 在仓库名称下方,点击 设置。如果您无法看到 “Settings” 选项卡,请选择 下拉菜单,然后点击 设置

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的“代码和自动化”部分,点击 Pages

  4. 在 “GitHub Pages” 中,选择 强制使用 HTTPS

排查证书供应问题(“证书尚未创建”错误)

当您在 Pages 设置中设置或更改自定义域名时,系统会自动进行 DNS 检查。此检查用于判断您的 DNS 配置是否允许 GitHub 自动获取证书。如果检查成功,GitHub 会将请求加入队列,向 Let's Encrypt 申请 TLS 证书。收到有效证书后,GitHub 会自动将其上传到负责 Pages TLS 终止的服务器上。当此过程成功完成时,您的自定义域名旁会显示一个勾选标记。

此过程可能需要一些时间。如果在点击 保存 几分钟后仍未完成,请尝试点击自定义域名旁的 移除。重新输入域名并再次点击 保存。这将取消并重新启动证书供应过程。

解决混合内容问题

如果您为 GitHub Pages 站点启用了 HTTPS,但站点的 HTML 仍然通过 HTTP 引用图像、CSS 或 JavaScript,则您的站点正在提供 混合内容。提供混合内容会降低站点安全性并导致资源加载出现问题。

要消除站点的混合内容,请确保所有资源均通过 HTTPS 提供,只需将站点 HTML 中的 http:// 替换为 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>

验证 DNS 配置

在某些情况下,由于自定义域名的 DNS 配置,HTTPS 证书无法生成。这可能是由于多余的 DNS 记录,或记录未指向 GitHub Pages 的 IP 地址导致的。

为确保 HTTPS 证书能够正确生成,我们建议使用以下配置。任何额外的带有 @ 主机的 AAAAAALIASANAME 记录,或指向您 www 子域或其他希望用于 GitHub Pages 的自定义子域的 CNAME 记录,都可能导致 HTTPS 证书无法生成。

情形DNS 记录类型DNS 记录名称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 or ANAME@USERNAME.github.io or
ORGANIZATION.github.io
子域
(ww​w.example.com,
blog.example.com)
CNAMESUBDOMAIN.example.com.USERNAME.github.io or
ORGANIZATION.github.io
© . This site is unofficial and not affiliated with GitHub, Inc.