使用certbot自动化管理免费ssl证书
ssl证书是用于验证身份和保护数据安全的一种数字证书。在缺少ssl证书的情况下,网络通信将不会被加密,所有数据将以明文传输,容易被拦截和窃听,这样的网站容易受到中间人攻击。目前也推崇使用https代替传统的http,传统的http已经被证明存在了很多安全问题,且浏览器也会将此类传统http网站标记为不安全网站。但是ssl证书也并不都是免费的,一些企业级ssl证书价格非常昂贵,不是个人开发者所能够承担的,当然也没有必要去承担。在笔者之前文章中提到的证书网站如zerossl 中虽然有提供免费ssl证书但是目前有申请次数的限制(也正因为如此才有了这篇文章)。
以下,笔者将介绍使用Let’s Encrypt 的certbot 客户端申请免费的ssl证书。certbot可与apache、nginx等服务配合使用,本文以在Ubuntu20.04上为nginx服务配置ssl证书为例。
Let’s Encrypt
Let’s Encrypt是一家全球性的证书颁发机构(CA),为世界各地的个人和团体提供获取、续期、管理SSL/TLS证书的服务。网站可以使用其证书来启用安全的HTTPS连接。Let’s Encrypt属于非营利组织,旨在推广HTTPS技术的应用,从而构建更加安全且尊重隐私的互联网环境。
certbot
在早期,申请并配置Let’s Encrypt签发的安全证书比较麻烦,只能手动进行配置以及部署,需要一定的技术水平。直到后来推出了一些自动化工具才使得ssl证书的配置及部署变得非常方便。certbot就是其中的一款官方的客户端工具。
certbot是ISRG (Internet Security Research Group,互联网安全研究小组) 组织的发起者EFF(电子前哨基金会)为Let’s Encrypt项目所发布的一个官方的客户端,实现了完全自动化的获取、部署和更新安全证书。
具体使用
前提:Ubuntu20.04环境、使用nginx服务。
1.安装certbot客户端及插件
1 | sudo apt install certbot python3-certbot-nginx |
2.生成证书
1 | sudo certbot --nginx |
使用以上命令生成证书的过程中,会要求提供邮箱地址以及需要配置证书的域名信息,以及选择是否需要重定向等。生成的ssl证书位于**/etc/letsencrypt/live**目录下。
3.更新证书
在大数情况下,certbot在安装时会自动配置一个cron job或systemd定时器来定期检查并更新证书。这意味着大部分时间里开发者不需要手动更新证书,certbot会自动进行更新。自动更新功能可通过以下命令进行测试
1 | sudo certbot renew --dry-run |
--dry-run
参数表示测试,而非真正执行更新。如果显示"Congratulations, all renewals succeeded."
的信息,则表示自动更新功能测试成功。
当然也可以通过以下命令手动更新证书
1 | sudo certbot renew |
这将检查所有已安装的证书,并更新即将过期的证书。
补充
除了Let’s Encrypt组织及其提供的certbot客户端以外,还有类似的buypass 组织以及更轻量的自动化shell脚本acme.sh 。
Let’s Encrypt和buypass所提供的证书有一些区别
- Let’s Encrypt的单次申请证书有效期为90天,而buypass的单次申请证书有效期则为180天。
- Let’s Encrypt支持签发泛域名和多域名证书,buypass的证书不支持泛域名、支持多域名。
参考资料
- 标题: 使用certbot自动化管理免费ssl证书
- 作者: Entropy Tree
- 创建于 : 2023-07-22 11:08:28
- 更新于 : 2023-10-07 14:37:50
- 链接: https://www.entropy-tree.top/2023/07/22/certbot-for-ssl/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。