早在去年我就想把博客启用更安全的HTTPS协议,不过考虑到博客里并不涉及什么敏感信息,而且当时使用的是WordPress如果半路配置HTTPS是相当繁琐的,最主要的是还需要额外购买证书,所以一直没有实施这个想法。
直到现在把博客托管到GitHub Pages后发现他们提供免费的HTTPS服务,由于我当时对这项免费的服务并不了解所以并没有第一时间配置。在使用了GitHub一段时间后发现他们的免费服务还是靠普的,此时又有了给博客启用HTTPS的想法, 我以为很简单直接在Settings里点选Enforce HTTPS不就完事了吗,哪知世上的事并不如人意。

Enforce HTTPS竟然是灰色的不给选?我当时不知出了什么问题,就在网上搜了很长时间,搜到的所有答案都是要求清空Custom domain重新设置自定义域名然后等24小时后就可以选Enforce HTTPS了。然后我就照着做了,然后傻等了24小时、48小时…… 一直等了N天也不行。如下图 Enforce HTTPS灰色的 这时候我才反应过来肯定哪里有什么不对,但是我却找不到原因,这让我苦恼了好几天。后来在GitHub的帮助页面发现可以给他们发邮件,我就抱着试试看的态度发了个简单的英文邮件,并附上了Custom domain页面和DNS设置页面的截图

My domain name: blog.imfang.net has correctly configured DNS, or can’t open HTTPS, ask for help

由于我不会英语,只能通过百度翻译写上这么一小段,希望GitHub的技术人员能看懂。没想到过了两天就收到了GitHub技术员Lesley发来的邮件。下图 GitHub技术员发来的邮件 当然还是使用百度翻译,我竟然也看懂了 翻译后 问题一目了然:是因为我使用了Cloudflare的HTTP/DNS代理导致GitHub无法查看生成HTTPS证书所需的DNS记录,我需要关掉Cloudflare上的HTTP/DNS代理然后等72小时生效后再清空Custom domain重新设置自定义域名。 Cloudflare 其实我只等了几分钟,实在不想等了就Ping了下域名发现IP变成GitHub的了,说明设置已经生效了,立马清空了Custom domain重新设置一遍自定义域名,哈哈Enforce HTTPS可以选了,点选后再等几分钟后HTTPS就生效了,困扰我1个多星期的问题解决了。 另外我的域名DNS设置的是A记录,GitHub建议更改为CNAME记录形式,这样以后即使GitHub更换了IP地址也不用重新设置了,我完全遵照GitHub的建议更改了域名的DNS为CNAME记录。 Enforce HTTPS正常 PS:一般如果使用的是域名商提供的DNS不会像我这么难设置,因为我使用了Cloudflare的CDN服务默认开启了HTTP/DNS代理(域名的IP被改成了Cloudflare提供的地址),所以导致GitHub无法查看生成HTTPS证书所需的DNS记录,如果你也遇到和我一样的问题可以试试我的方法,启用HTTPS正常后我又偷偷的打开了HTTP/DNS代理不知道会不会出问题,不过暂时好像一切正常。
最后一定要重点感谢一下GitHub技术员Lesley(莱斯莉)提供的专业帮助,这充分证明了GitHub团队的专业和敬业精神!再看国内的某些客服格式化的回复跟人家比简直就是天壤之别