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


举报

© 著作权归作者所有


1