Let’s Encrypt不自动续期?更新通配符证书续期脚本

广告

上次解决了申请安装Let’s Encrypt获取失败Error Message: AutoSSL Issue Failed的DNS问题之后,这个免费SSL证书又有些问题需要解决了。

CWP控制面板本来似乎已设置好了Let’s Encrypt证书到期前自动更新续期的,不料昨天Let’s Encrypt不自动续期更新了,所以造成SEO流量大幅下滑,幸好解决好后就能恢复了。

什么是 Let’s Encrypt?

Let’s Encrypt不自动续期怎么办?免费SSL证书快速续期

Let’s Encrypt是一个由非营利性组织互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。

简单的说,借助Let’s Encrypt颁发的证书可以为我们的网站免费启用HTTPS(SSL/TLS) 。

Let’s Encrypt免费证书的签发/续签都是脚本自动化的,Let’s Encrypt官方推荐使用Certbot客户端来签发证书。

以下是如何申请 Let’s Encrypt免费SSL证书的教程 ▼

什么是Let’s Encrypt 通配符证书?

在没有出现通配符证书之前,Let’s Encrypt 仅支持2种证书:

  1. 单域名证书:证书仅仅包含一个主机。
  2. SAN 证书:也称为域名证书,一张证书可以包括多个主机(Let’s Encrypt 限制是 20)。

对于个人用户来说,由于主机并不是太多,所以使用 SAN 证书完全没有问题,但是对于大公司来说有一些问题:

  1. 子域名非常多,而且过一段时间可能就要使用一个新的主机。
  2. 注册域也非常多。

对于大企业来说,SAN 证书可能并不能满足需求,而所有的主机全部包含在一张证书中,使用 Let’s Encrypt 证书(限制20)是无法满足的。

通配符证书就是证书中可以包含一个通配符:

  • 比如 *.example.com, *.example.cn,用 * 号来自动匹配所有子域名;
  • 大型企业也可以使用通配符证书了,一张SSL证书可以放置更多的主机了。

通配符证书和SAN证书的区别

  1. 通配符(Wildcard)证书——通配符证书广泛用于保护一个独特的完全限定性域名下的多个子域名。这种证书的好处是,它不仅使管理证书变得简单,而且还能帮助你降低管理费用。它能够随时保护你当前和将来的子域名。
  2. SAN证书——SAN证书(也称为多域名证书)用于利用一个单个的证书保护多个域名。它们与通配符证书不同的地方在于,支持一个域名下所有无限个子域名。SAN仅支持在证书中输入的完全限定性域名。SAN证书是令人印象深刻的,因为使用它们,你便能够利用一个单个的证书保护超过100个不同的完全限定性域名;然而,保护的数量取决于发行的证书机构。

如何申请Let’s Encrypt通配符证书?

为了实现通配符证书,Let’s Encrypt 对 ACME 协议的实现进行了升级,只有 v2 协议才能支持通配符证书。

也就是说任何客户端只要支持 ACME v2 版本,就可以申请通配符证书了。

下载Certbot-Auto

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --version

Let’s Encrypt通配符证书脚本

git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
cd certbot-letencrypt-wildcardcertificates-alydns-au
chmod 0777 au.sh

Let’s Encrypt通配符证书到期定时续约脚本

这里的脚本是nginx 编译安装或者通过Docker 安装的服务器,通过宿主机代理或者负载均衡主机代理https,自动备份SSL证书,重启Nginx代理服务器。

  • 注:脚本实际使用的依然是 ./certbot-auto renew
#!/usr/bin/env bash

cmd="$HOME/certbot-auto" 
restartNginxCmd="docker restart ghost_nginx_1"
action="renew"
auth="$HOME/certbot/au.sh php aly add"
cleanup="$HOME/certbot/au.sh php aly clean"
deploy="cp -r /etc/letsencrypt/ /home/pi/dnmp/services/nginx/ssl/ && $restartNginxCmd"

$cmd $action \
--manual \
--preferred-challenges dns \
--deploy-hook \
"$deploy"\
--manual-auth-hook \
"$auth" \
--manual-cleanup-hook \
"$cleanup"

加入 crontab,编辑文件▼

/etc/crontab

#证书有效期<30天才会renew,所以crontab可以配置为1天或1周
0 0 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /home/pi/crontab.sh

CWP服务器配置重建

以下是CWP重建nginx / apache服务器的步骤:

第 1 步:在CWP控制面板左侧点击 WebServer Settings → Select WebServers ▼

在CWP控制面板左侧点击:WebServer Settings → Select WebServers 

第 2 步:选择 Nginx & Apache ▼

第 2 步:CWP控制面板选择 Nginx & Apache

第 3 步:点击底部“Save & Rebuild Configuration”按钮,进行保存和重建配置。

  • 刷新网站,将看到SSL证书的到期日期已更新。

扩展阅读:

希望陈沩亮博客( https://www.chenweiliang.com/) 分享的《Let’s Encrypt不自动续期?更新通配符证书续期脚本》,对您有帮助。

欢迎分享本文链接:https://www.chenweiliang.com/cwl-1199.html

最近陈沩亮博客刚开通了Telegram频道,而且已经将陈沩亮博客和Telegram频道实现了自动同步。

下次最新分享会第一时间自动同步到Telegram频道,欢迎订阅 ^_^

喜欢就分享和按赞!
您的分享和按赞,是我们持续的动力!

欲获取更多资讯内幕和秘技,欢迎扫码关注微信公众号:cwlboke
陈沩亮博客的 微信公众号二维码