SSL证书更新
获取certbot-auto
--
```
wget https://dl.eff.org/certbot-auto
```
添加可执行权限
--
```
cd certbot-auto所在文件,或在下面指令中直接使用绝对路径。
chmod a+x certbot-auto
```
执行部署
--
```
./certbot-auto
```
获取证书日期信息
--
```
openssl x509 -in /etc/letsencrypt/live/sys.bangnikeji.net/fullchain.pem -noout -dates
输出如下
notBefore=Sep 15 05:53:55 2020 GMT 证书获取日期
notAfter=Dec 14 05:53:55 2020 GMT 证书过期日期
```
证书自动续期
--
**步骤:**
1.获取证书过期日期。
2.获取执行日期明天的日期。(若执行日期为9日,则获取10日的日期)
3.将过期日期与明天日期转化成毫秒数
4.判断两日期是否相等,或者过期日期大于执行日期的后一天的日期,条件匹配执行证书更新指令。不匹配输出日志。
5.将脚本加入到定时任务中,每天执行一次,重启定时任务。
**脚本代码如下**
```
#!/bin/bash
AFTER_TIME=$(openssl x509 -in /etc/letsencrypt/live/sys.bangnikeji.net/fullchain.pem -noout -dates | grep 'After' | awk -F '=' '{print $2}')
TOMORROW=$(date -d `date -d 'tomorrow' '+%Y%m%d'` '+%s%N')
EXPIRATION_TIME=`date -d "$AFTER_TIME" '+%s%N'`
NOW=`date '+%Y-%m-%d %H:%M:%S'`
if [ $EXPIRATION_TIME -eq $TOMORROW ] || [ $EXPIRATION -ge $TOMORROW ]
then
echo ${NOW} " <<<<<< The SSL certificate is about to expire!!! >>>>>> "
echo ${NOW} " <<<<<< Execute : cretbot-auto renew >>>>>> "
$(cat /root/certbot-auto/certbot-auto renew --force-renewal)
new_certificate_date=$(openssl x509 -in /etc/letsencrypt/live/sys.bangnikeji.net/fullchain.pem -noout -dates)
echo ${NOW} $new_certificate_date
echo ${NOW} " <<<<<< The SSL certificate has been updated!!! >>>>>> "
else
echo ${NOW} " <<<<<< The SSL certificate is not expiration!!! >>>>>> "
fi
```
文件存放路径:/etc/HTTPS_renew_certificate.sh
**注**
`grep 'After'` => 是根据‘After’关键词筛选。因为输出的日期信息包含获取时间和过期时间,我们这里只需要过期时间,所以使用`grep`指令,将过期日期筛选出来。
`awk -F '=' '{print $2}'` => awk是一种处理文本文件的语言。 `-F` 是根据指定分隔符进行分割,`{print $2}` 只获取第二个元素。
`--force-renewal` => 更新指令中添加此语句为强制更新。
定时任务代码
```
0 0 * * * root /etc/HTTPS_renew_certificate.sh >> /root/logs/CertificateRenew.log 2>&1
```
**重启定时任务**
```
/bin/systemctl reload crond.service # 重载
/bin/systemctl restart crond.service # 重启
```