具有存储库管理员权限的人员可以为站点强制实施 HTTPS GitHub Pages 。
HTTPS 和 GitHub Pages 简介
所有 GitHub Pages 站点(包括使用自定义域正确配置的站点)都支持 HTTPS 和 HTTPS 强制实施。 有关自定义域的详细信息,请参阅“关于自定义域名和 GitHub 页面”和“自定义域和 GitHub Pages 故障排除”。
GitHub Pages 站点在 2016 年 6 月 15 日之后创建,并且使用 github.io 域会自动通过 HTTPS 提供服务。
GitHub Pages 站点不应该用于敏感事务,例如发送密码或信用卡号码。
警告
GitHub Pages 站点在 Internet 上公开可用,即使站点的存储库是专用的(如果计划或组织允许)。 如果站点的存储库中有敏感数据,你可能想要在发布前删除数据。 有关详细信息,请参阅“关于仓库”。
注意
RFC3280 表示通用名称的最大长度应为 64 个字符。 因此,站点 GitHub Pages 的整个域名必须少于 64 个字符,才能成功创建证书。
为 GitHub Pages 站点强制实施 HTTPS
-
在 GitHub 上,导航到站点的仓库。
-
在仓库名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”。

-
在边栏的“代码、规划和自动化”“部分中,单击 “页面”。
-
在“GitHub Pages”下,选择“ 强制实施 HTTPS”。
证书配置故障排除(“证书尚未创建”错误)
当您在 Pages 设置中设置或更改自定义域名时,系统会开始自动进行 DNS 检查。 此检查确定是否将 DNS 设置配置为允许 GitHub 自动获取证书。 如果检查成功,GitHub 会将一个任务加入队列,以从 Let's Encrypt 请求 TLS 证书。 收到有效的证书后, GitHub 会自动将其上传到处理 Pages TLS 终止的服务器。 成功完成此过程后,你的自定义域名旁边将显示一个复选标记。
该过程可能需要一些时间。 如果在单击“保存”后几分钟未完成此过程,请尝试单击自定义域名旁边的“删除” 。 重新键入域名,然后单击“保存”。 这将取消并重新启动配置过程。
解决具有混合内容的问题
如果为 GitHub Pages 网站启用 HTTPS,但网站的 HTML 仍通过 HTTP 引用图像、CSS 或 JavaScript,则网站正在提供 混合内容。 提供混合内容可能会降低站点的安全性,并导致在加载资产时出现问题。
要删除站点的混合内容,请在站点的 HTML 中将 http:// 更改为 https://,确保所有资产都通过 HTTPS 提供。
资产通常位于以下位置:
- 如果站点使用 Jekyll,则 HTML 文件可能位于
_layouts文件夹中。 - CSS 通常位于 HTML 文件的
<head>部分。 - JavaScript 通常位于
<head>部分或结束</body>标记之前。 - 图像通常位于
<body>部分。
提示
如果您在站点源文件中找不到相关资源,请尝试在文本编辑器中搜索 GitHub,或在 http:// 上搜索站点源文件。
HTML 文件中引用的资产示例
| 资产类型 | HTTP | HTTPS |
|---|---|---|
| CSS | <link rel="stylesheet" href="http:/ | <link rel="stylesheet" href="https:/ |
| JavaScript | <script type="text/ | <script type="text/ |
| 图像 | <a href="http:/ | <a href="https:/ |
验证 DNS 配置
在某些情况下,由于自定义域的 DNS 配置,无法生成 HTTPS 证书。 这可能是由额外的 DNS 记录,或者某些记录未指向 GitHub Pages 的 IP 地址所导致的。
为了确保 HTTPS 证书正确生成,建议使用以下配置。 任何其他使用 ANAME 主机的 A、ALIAS、AAAA 或 @ 记录,或指向您的 www 子域或您想与 GitHub Pages 一起使用的其他自定义子域的 CNAME 记录,都可能会导致无法生成 HTTPS 证书。
| 场景 | DNS 记录类型 | DNS 记录名称 | DNS 记录值 |
|---|---|---|---|
| Apex 域 ( example.com) | A | @ | 185.199.108.153185.199.109.153185.199.110.153185.199.111.153 |
| Apex 域 ( example.com) | AAAA | @ | 2606:50c0:8000::1532606:50c0:8001::1532606:50c0:8002::1532606:50c0:8003::153 |
| Apex 域 ( example.com) | |||
ALIAS 或 ANAME | @ | ||
USERNAME.github.io 或ORGANIZATION.github.io | |||
| 子域 ( www.example.com、 | |||
blog.example.com) | CNAME | SUBDOMAIN.example.com. | |
USERNAME.github.io 或ORGANIZATION.github.io |