Certbot - 简化SSL证书管理
Tips:由于笔者的服务器为CentOS 7版本,因此本文将基于CentOS 7操作系统进行阐述
1. 简介
Certbot是一个由Electronic Frontier Foundation (EFF) 开发的免费、开源工具,用于简化在服务器上部署和管理SSL / TSL证书的过程,该工具涵盖了证书获取、更新、删除等功能,省去了以往从云厂商平台获取证书 - 上传至服务器 - 调配的繁琐过程,并且Certbot支持在后台生成一个定时任务以定时刷新证书
2. 安装
每个操作系统的安装方式的各有千秋,建议进入Certbot官网选择对应的操作系统查阅关联的安装步骤,如下所示:
如果你恰巧是CentOS 7版本,恭喜!可以直接根据本篇笔记进行Certbot
工具的安装与使用,官网推荐使用Snapd进行快速安装
a. Snapd
Tips:
Snapd
一种软件包管理系统,可以在各种不同的 Linux 发行版上运行,包括 Ubuntu、Debian、Fedora、CentOS 等,它还支持多种硬件架构,包括 x86、ARM
在CentOS安装Snapd
前,需要预先安装epel-release
,安装指令如下:
1 | sudo yum install epel-release |
Tips:
epel-release
是 Extra Packages for Enterprise Linux(EPEL)的缩写,是为 Red Hat Enterprise Linux(RHEL)及其衍生发行版操作系统提供额外软件包的一个项目,这些额外的软件包通常包含了一些不在官方软件仓库中的软件,如开源的工具、库和应用程序等,安装这个软件包的目的在于将默认不在官方仓库中的软件包加入进来,并且能够使用系统的包管理器 (yum) 进行安装
安装EPEL
额外软件包仓库后,通过以下命令安装Snapd
:
1 | sudo yum install snapd |
安装完成后,通过以下命令启动Snapd
服务:
1 | sudo systemctl enable --now snapd.socket |
通过以下命令创建Snapd
的软链接,目的是为了方便默认情况下使用Snapd
安装的应用程序能够从/var/lib/snapd/snap
映射到/snap
目录下
1 | sudo ln -s /var/lib/snapd/snap /snap |
至此,Snapd
安装完成,可通过snap --version
查看对应的版本号,如下所示:
1 | snap --version |
b. Certbot
在正式安装前,需要卸载已有的Certbot
工具,CentOS操作系统可以通过以下命令进行卸载:
1 | sudo yum remove certbot |
在清理掉系统原有的Certbot
工具后,便可以通过以下命令使用Snapd
进行快速安装:
1 | sudo snap install --classic certbot |
安装完成后,为其创建可执行的软链接:
1 | sudo ln -s /snap/bin/certbot /usr/bin/certbot |
通过certbot --version
可以判断是否已经正常安装,如下所示:
1 | certbot --version |
至此,Certbot
工具已安装完成
3. 使用
Tips:在使用
Certbot
工具前,需要确保nginx
关闭,因为默认情况下nginx
会占用80端口,同时需要确保80端口与443端口外网可通
- 前往云厂商域名管理平台,将需要生成SSL证书的域名解析指向当前服务器
- 进入服务器,使用
nginx -s stop
关闭nginx
服务,以确保80端口不被占用,因为Certbot
工具会在生成证书的时候在本地启动一个Web服务,该服务默认使用的是80端口 - 生成指定域名的SSL证书,其中
-d
参数后跟着的是需要生成证书的域名,-m
参数后跟着的是个人邮箱
1 | certbot certonly --standalone -d zchengb.top -m zxchengb@163.com --agree-tos --no-eff-email |
- 通过以上命令生成SSL证书后,复制生成证书的路径,进入
nginx.conf
配置文件,进行域名证书配置,如下所示:
1 | server { |
- 需要后续需要手动刷新SSL证书,可通过
sudo certbot renew
命令进行刷新 - 默认情况下,在
certbot
生成证书后,会在系统内默认写入一个定时任务用于定期刷新证书,CentOS 7可通过systemctl list-timers
命令进行确认,如下所示:
1 | systemctl list-timers |
自动刷新证书也是certbot
的精华所在,基于此可以免去3个月更新一次SSL证书的烦恼,如果通过以上命令未查看到对应的定时任务,也可以检查以下目录下的文件:
/etc/crontab/
/etc/cron.*/*
其他常用命令:
sudo certbot renew
:手动触发证书更新(需要通过关闭80端口来确保更新成功)sudo certbot delete
:删除不再需要的证书sudo certbot certificates
:列出当前系统中安装的所有证书
至此,已完成SSL证书的配置,在完成Nginx配置后,可以通过nginx
命令启动nginx
服务,并通过浏览器访问https://<您的域名>
来确认SSL证书是否已生效