免费的https证书申请
去年帮朋友迁移一个WordPress博客,免费域名解析刚切过去,证书浏览器就弹出了红色的申请“不安全”警告。他问我能不能不花钱搞定SSL证书,免费我说能,证书而且十分钟就能跑起来。申请
免费的免费HTTPS证书早就不是稀罕事了。Let's Encrypt从2015年就开始签发,证书到现在已经发了超过30亿张证书。申请它的免费背后是ISRG这个非营利组织,Mozilla、证书思科、申请Chrome这些大厂都是免费赞助方。换句话说,证书你用的申请免费证书,和很多商业网站用的是同一套信任链。
证书从哪来
目前最主流的选择是Let's Encrypt,其次是ZeroSSL和Buypass。Let's Encrypt的证书有效期是90天,到期前30天可以续签。有人嫌短,但这就是它的设计逻辑——逼你自动化,别手动折腾。
ZeroSSL提供90天免费证书,也支持ACME协议,界面比Let's Encrypt友好一些,适合不想碰命令行的人。Buypass的证书有效期是180天,但国内访问速度偶尔不太稳定。
我个人一直用Let's Encrypt,没别的原因,就是工具链最成熟。
怎么申请
最省事的方式是用Certbot。以Nginx为例,在Ubuntu上跑两条命令:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d example.com -d www.example.com Certbot会自动改Nginx配置、申请证书、设置续签定时任务。整个过程不到一分钟。你唯一需要确认的是域名已经解析到这台服务器,并且80端口能从公网访问。
如果没有服务器权限,比如用的是虚拟主机或者某些SaaS建站平台,那就看服务商有没有内置Let's Encrypt支持。cPanel、宝塔面板、Cloudflare Pages这些都有一键开启的选项。
Cloudflare比较特殊。你把域名NS切到Cloudflare,开启“灵活”或“完全”SSL模式,浏览器到Cloudflare这一段就是HTTPS了。源站到Cloudflare那段可以再单独配证书。对个人博客来说,这几乎是最省心的方案。
几个容易踩的坑
申请失败最常见的原因是80端口被防火墙挡了。Let's Encrypt验证域名所有权时,默认走HTTP-01挑战,需要从外部访问 http://你的域名/.well-known/acme-challenge/。如果服务器只开了443,验证就会超时。
另一个坑是CDN。如果域名已经接入CDN,而CDN回源走的是HTTP,那Certbot在源站上跑验证可能通不过。解决办法是暂时关闭CDN或者改用DNS-01验证方式。
还有续签。Certbot装好后会自动加一个systemd timer或者cron job,但如果你后来改了Nginx配置或者换了服务器,续签可能静默失败。建议跑一次 sudo certbot renew --dry-run 确认没问题。
值不值得用
有人担心免费证书“不安全”或者“不被信任”。实际上,Let's Encrypt的根证书ISRG Root X1已经预置在几乎所有主流操作系统和浏览器里。Android 7.1.1以上的版本都没问题。真正需要付费证书的场景,通常是企业需要OV或EV证书来展示公司名称,或者需要更长的有效期和技术支持。
对个人开发者、小团队、博客、测试环境来说,免费证书完全够用。省下的钱买杯咖啡不好吗。
我自己的几个站点全部用的Let's Encrypt,跑了三年多,没出过因为证书本身导致的问题。唯一一次故障是服务器时间不对,导致续签失败——那次之后我加了NTP同步。
如果你还在犹豫,先拿一个不重要的域名试一遍。跑通了再往主站上迁。
(责任编辑:百科)














