CentOS 7 安装 Certbot 并更新证书(使用 Snap)
背景
目前 certbot 不推荐在 CentOS 7 上使用仓库安装,官方建议使用 snap 进行 certbot 的安装和更新。
安装 Snapd
在 CentOS 7.6 以上版本均可使用 Snap。如果不知道你的版本,使用如下命令查看:
cat /etc/centos-release
添加 CentOS repository
CentOS 8
sudo dnf install epel-release
sudo dnf upgrade
CentOS 7
sudo yum install epel-release
添加 EPEL repository 后,进行 Snapd 的安装
bashCopy code
sudo yum install snapd
安装后,需要启用管理 snap 通信套接字的 systemd unit
sudo systemctl enable --now snapd.socket
为了启用 classic snap 的支持,需要创建如下软连接
sudo ln -s /var/lib/snapd/snap /snap
重新登录或者重启你的系统,以确保 snap 的路径正确更新,至此 snap 安装完成。
安装 Certbot
升级 snap
执行如下命令以保证 Snap 为最新的版本:
sudo snap install core
sudo snap refresh core
卸载 Certbot 和其他 Certbot OS 包
在安装 Certbot snap 之前,确保将通过操作系统包管理器(如 apt、dnf 或 yum)安装的任何 Certbot 包删除。
安装 Certbot
sudo snap install --classic certbot
配置 Certbot 命令行
执行如下命令以确保 Certbot 命令行可用:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
运行 Certbot(二选一)
- 运行此命令获取证书,并让 Certbot 自动编辑 Nginx 配置以提供服务,只需一步即可打开 HTTPS 访问:
sudo certbot --nginx
注:Certbot 默认 nginx 配置文件在 /etc/nginx/nginx.conf
或 /usr/local/etc/nginx/nginx.conf
,若你的 nginx 配置文件不在此处(以 /usr/local/nginx/conf/nginx.conf
为例),需在命令后加上 --nginx-server-root /usr/local/nginx/conf
- 仅获得证书。如果你希望手动配置 nginx,输入如下命令:
sudo certbot certonly --nginx
自动续期
Certbot 包带有 cron 作业或 systemd 计时器,它将在证书过期之前自动续订证书。除非更改配置,否则不需要再次运行 Certbot。通过运行以下命令,可以测试证书的自动续订:
sudo certbot renew --dry-run
renew 的命令被配置到以下位置中的一个:
/etc/crontab/
/etc/cron.*/*
systemctl list-timers