CentOS7自动安装单域名SSL证书
一、概述
Let's Encrypt
是一个证书颁发机构(CA)。要从 Let's Encrypt 获取证书,就必须证明对域名的实际控制权。
您可以在您的 Web 主机上运行使用 ACME 协议的软件来获取 Let’s Encrypt 证书。
Certbot
是一个ACME客户端,用于签发SSH证书。
二、安装 snapd
snap是一种全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易管理。但是由此带来的问题就是它占用更多的磁盘空间。
1> 安装EPEL源:https://sidoc.cn/doc/583.html
2> 安装snapd
## 安装snapd
sudo yum install snapd;
## 启用 snap 通信套接字的systemd单元
sudo systemctl enable --now snapd.socket;
## 在/var/lib/snapd/snap和snap之间创建符号链接/snap
sudo ln -s /var/lib/snapd/snap /snap;
## 重启系统
reboot;
3>. 更新snapd为最新版
sudo snap install core;
sudo snap refresh core;
三、安装Certbot
安装certbot后,certbot会扫描所有nginx配置文件,从中找出所有域名;并让你选择要为哪些域名安装SSL证书。需要注意的是:选择安装SSL证书的域名,其顶级域名必须解析到当前安装certbot的服务器;
1>. 删除已有的Certbot,确保系统中没Certbot残留
## 0.1> 删除通过yum安装的certbot
sudo yum remove certbot
## 0.2> 删除通过snap安装的certbot
sudo sed -i '/certbot-auto/d' /etc/crontab;
sudo rm /usr/local/bin/certbot-auto;
sudo rm -rf /opt/eff.org;
2>. 安装Certbot
## 安装Certbot
sudo snap install --classic certbot;
## 建立软链接(最新版中,此步可省略)
## sudo ln -s /snap/bin/certbot /usr/bin/certbot;
## 安装Certbot的nginx插件,此插件可自动编辑nginx配置文件
sudo certbot --nginx;
四、自动更新证书
0.1> 测试证书更新
sudo certbot renew --dry-run;
0.2> 若测试更新正常,即可通过以下命令来更新证书;
## 此命令会自动更新30天内到期的证书
sudo certbot renew
0.3> 自动更新证书
由于 Let's Encrypt 证书默认有效期为90 天,所以要在证书到期之前更新证书;
编辑crontab文件
vi /etc/crontab
设置每天凌晨3天执行一次更新证书命令
0 3 * * * certbot renew