具有仓库管理员权限的人员可以对 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
-
在 GitHub 上,前往您站点的仓库。
-
在仓库名称下方,点击 设置。如果您无法看到 “Settings” 选项卡,请选择 下拉菜单,然后点击 设置。

-
在侧边栏的“代码和自动化”部分,点击 Pages。
-
在 “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 文件中引用的资源示例
| 资源类型 | HTTP | HTTPS |
|---|---|---|
| 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 证书能够正确生成,我们建议使用以下配置。任何额外的带有 @ 主机的 A、AAAA、ALIAS、ANAME 记录,或指向您 www 子域或其他希望用于 GitHub Pages 的自定义子域的 CNAME 记录,都可能导致 HTTPS 证书无法生成。
| 情形 | DNS 记录类型 | DNS 记录名称 | DNS 记录值 |
|---|---|---|---|
| 根域名 ( example.com) | A | @ | 185.199.108.153185.199.109.153185.199.110.153185.199.111.153 |
| 根域名 ( example.com) | AAAA | @ | 2606:50c0:8000::1532606:50c0:8001::1532606:50c0:8002::1532606:50c0:8003::153 |
| 根域名 ( example.com) | ALIAS or ANAME | @ | USERNAME.github.io orORGANIZATION.github.io |
| 子域 ( www.example.com,blog.example.com) | CNAME | SUBDOMAIN.example.com. | USERNAME.github.io orORGANIZATION.github.io |