使用certbot自动化管理免费ssl证书

Entropy Lv4

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的证书不支持泛域名、支持多域名。

参考资料

HTTPS 简介及使用官方工具 Certbot 配置 Let’s Encrypt SSL 安全证书详细教程

  • 标题: 使用certbot自动化管理免费ssl证书
  • 作者: Entropy
  • 创建于 : 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 进行许可。
评论
此页目录
使用certbot自动化管理免费ssl证书