https证书免费申请教程
去年帮朋友迁移博客,书免发现他的费申站点还是HTTP,浏览器地址栏直接标着“不安全”。请教他问我买哪家SSL证书,书免我说别急,费申有免费的请教,而且不比某些付费的书免差。十分钟后他拿着Let's Encrypt签发的费申证书跑起来了。这事没那么复杂,请教下面把整个流程拆开说。书免 免费SSL证书不是没有,是请教很多人不知道去哪找。Let's Encrypt由非营利组织ISRG运营,书免2015年上线,费申背后有Mozilla、请教Cisco、Chrome等支持。它签发的DV(域名验证)证书有效期90天,浏览器全兼容。缺点就一个:三个月得续一次。但这事可以自动化,后面会讲。 除了Let's Encrypt,ZeroSSL和Buypass也提供免费证书,但Let's Encrypt的客户端工具Certbot生态最成熟,遇到问题搜得到答案。选它。 一台能跑命令行的服务器,一个已经解析到该服务器的域名。域名解析没生效的话,验证会失败,这个坑很多人踩过。确认方式很简单,在本地终端 服务器上需要有root权限或sudo权限。Web服务器软件Nginx或Apache都行,Certbot对两者支持都很好。我用Nginx演示,Apache的操作几乎一样。 以Ubuntu 22.04为例。先装snapd,再用snap安装Certbot,这是官方推荐的安装方式,比apt源里的版本新: 装完之后,一条命令就能搞定证书签发和Nginx配置: Certbot会自动完成几件事:向Let's Encrypt申请证书、验证域名所有权、把证书文件写到 如果你只想拿证书不想让它动Nginx配置,加 证书文件在 Certbot安装时会自动创建一个systemd定时任务,每天跑两次检查证书是否需要续期。你可以手动测试一下: 看到“Congratulations”就说明续期流程没问题。证书到期前30天会自动续,续完之后需要重载Nginx才能生效。Certbot的systemd timer已经包含了重载钩子,但如果你是手动安装的Certbot,建议加一个deploy hook: 80端口必须开着。Let's Encrypt的HTTP-01验证方式需要通过80端口访问你服务器上的验证文件。防火墙拦了80端口,签发一定失败。用云服务器的,安全组里也要放行。 CDN场景下证书签发会复杂一些。如果你的域名走了Cloudflare代理,要么先关掉代理再签,要么用DNS-01验证方式。Certbot支持DNS插件,但配置因DNS服务商而异,Cloudflare有对应的插件可以用。 证书签发频率有限制。Let's Encrypt对同一域名每周最多签发5次,测试的时候别反复签,用 我自己跑了三年Let's Encrypt证书的站点,没出过浏览器不信任的问题。唯一的麻烦是有次服务器迁移忘了同步Let's Encrypt 是费申目前最靠谱的免费选择
准备工作:你需要什么
ping yourdomain.com,看返回的IP是不是你服务器IP。安装Certbot并签发证书
sudo apt update sudo apt install snapd sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com /etc/letsencrypt/live/目录、修改Nginx配置文件加入443端口监听和证书路径。过程中它会问你邮箱(用于到期提醒)和是否同意服务条款,填一下就完事。certonly参数:sudo certbot certonly --nginx -d yourdomain.com /etc/letsencrypt/live/yourdomain.com/下面,fullchain.pem是证书链,privkey.pem是私钥。手动配置Nginx时指向这两个文件就行。自动续期:设好就不用管了
sudo certbot renew --dry-run sudo certbot renew --deploy-hook "systemctl reload nginx" 几个容易翻车的点
--dry-run或者staging环境测试。/etc/letsencrypt/目录,新机器上续期失败,排查了半小时。迁移时记得把这个目录一起带走。
- 随机阅读
- 搜索
-
- 友情链接
-