```html 免费https证书申请 免费https证书申请 去年帮朋友迁一个博客,免费域名解析刚切完,书申浏览器地址栏就弹出“不安全”三个字。免费他问我:能不能不花钱把那个小锁头弄出来?书申我说能,而且十分钟就能搞定。免费后来我发现,书申很多人卡在“免费”和“https”这两个词之间,免费以为要么花钱买,书申要么折腾到崩溃。免费其实都不是书申。 Let's Encrypt 是免费目前最主流的免费证书颁发机构。它由非营利组织 Internet Security Research Group 运营,书申背后有 Mozilla、免费Cisco、书申Chrome 等一堆大厂撑腰。免费2015 年上线,到 2024 年已经签发了超过 40 亿张证书。这个数字不是重点,重点是它改变了整个 HTTPS 生态——以前一张 DV 证书一年要几十到几百块,现在零成本。 怎么申请? 最省事的方式是用 acme.sh 脚本,或者 certbot。我习惯用 acme.sh,因为它不依赖 Python,纯 shell,装起来干净。一行命令: curl https://get.acme.sh | sh 装完它会自动往 crontab 里塞一个定时任务,到期前自动续签。这个设计很讨喜,省得你三个月后忘得一干二净。证书有效期 90 天,官方就是逼你自动化。手动续?也行,但没必要。 验证域名所有权有两种常见方式:HTTP-01 和 DNS-01。HTTP-01 需要你的服务器 80 端口能访问,acme.sh 会在网站根目录放一个临时文件,Let's Encrypt 从外网来抓。DNS-01 则是在域名 DNS 里加一条 TXT 记录。如果你用 Cloudflare 管 DNS,那更简单,acme.sh 有专门的 API 插件,填个 token 就自动加记录、删记录。 我一般推荐 DNS-01,尤其是服务器在防火墙后面、80 端口没开的情况。而且 DNS-01 支持泛域名证书——*.example.com 一张证书全搞定。泛域名用 HTTP-01 是签不出来的,这是硬限制。 具体走一遍 假设域名是 example.com,用 Cloudflare 解析。先 export 两个环境变量: export CF_Token="你的API令牌" export CF_Account_ID="你的账户ID" 然后签发: acme.sh --issue --dns dns_cf -d example.com -d *.example.com 等几秒到几十秒,证书就下来了。文件默认放在 ~/.acme.sh/example.com/ 下面。接着安装到 Nginx 或 Apache 的配置目录: acme.sh --install-cert -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.crt \ --reloadcmd "systemctl reload nginx" Nginx 配置里把 ssl_certificate 和 ssl_certificate_key 指过去,reload 一下。浏览器再访问,锁头就出来了。 几个坑 第一个坑:Let's Encrypt 有速率限制。同一域名每周最多签 50 张证书。正常用根本碰不到,但如果你反复调试、删了重签,可能撞上。撞上了就等一周,或者换 ZeroSSL——acme.sh 也支持,它家免费证书同样 90 天。 第二个坑:老设备兼容性。Let's Encrypt 的根证书是 ISRG Root X1,2015 年之后的系统基本都认。但有些安卓 7 以下的机器、或者 Windows XP 上的老浏览器,可能报证书错误。这不是证书本身的问题,是系统根证书库太旧。真遇到了,只能换付费证书或者让用户升级设备。 第三个坑:CDN 场景。如果你套了 Cloudflare 的代理,源站证书其实可以自签,因为 Cloudflare 到源站这一段它不验证。但 Cloudflare 到访客这一段,它自己会提供边缘证书。所以很多人误以为“套了 CF 就不用管证书”,其实源站该配还得配,只是可以用自签的。 值不值得折腾 我的判断是:只要你有域名、有服务器,HTTPS 就没有理由不做。Chrome 从 2018 年开始就把 HTTP 站点标记为“不安全”,现在连 Safari 和 Edge 也一样。搜索引擎给 HTTPS 站点更高权重,这是明牌。而且免费证书的自动化程度已经高到——你配好一次,后面基本不用管。 唯一要花点时间的是第一次配置。半小时以内,绝对能跑通。跑通之后,每 60 天自动续签一次,你甚至感觉不到它的存在。 所以别犹豫了。打开终端,敲下那行 curl 命令。锁头就在那里等你。 ``` |