再续Let’s Encrypt 证书申请、部署安装与自动续期教程

开发利器 2023年12月4日 1.22K

之前写过一篇申请Let’s Encrypt的教程,最近服务器到期,我就将之前的服务器换到了新的服务器上,而且正好碰到有一个站点的域名到期了,于是就按照之前的生成证书的方法折腾,结果没成功,不断报错,因此有了这篇文章,可以看成是对另外一篇文章的补充吧。

之前那篇是通过 yum 的方式安装的,可以参考之前那篇,今天这篇是snap方式安装。

亲测非常有效的 Let’s Encrypt 证书申请、部署安装与自动续期教程

snap 方式安装certbot

优点:官方推荐,兼容性好,不依赖系统

安装 snap (jumpserver 会报警)

apt-get install snapd 

卸载其他形式安装的

sudo apt-get remove certbot

安装 certbot

sudo snap install --classic certbot 
ln -s /snap/bin/certbot /usr/bin/  
certbot --version

查看版本 (出现版本后表示安装成功)

certbot --version

下载安装 letscertbot

这个的主要作用是用于自动化获取、续期、部署ssl证书使用。

cd /opt/scripts
git clone https://github.com/jinhucheung/letscertbot.git

#修改配置文件
cd letscertbot
cp config.json.example config.json
vim config.json

测试是否可以正常的修改阿里云的DNS解析配置

cd /opt/scripts/letscertbot
sudo python ./bin/manual.py --test --domain www.xxzhuti.com --dns aliyun

---------------- 正确的返回----------------- 可以正常生成证书
root@zuiyoujie:/opt/scripts/letscertbot# sudo python ./bin/manual.py --test --domain www.xxzhuti.com  --dns aliyun
start to test www.xxzhuti.com in DNS aliyun API
add TXT record(domain=xxzhuti.com, rr=_acme-challenge.letscertbot, value=uJqSmGygc6iH3ApZ) to aliyun DNS
added TXT record
waiting 20 seconds...
remove above TXT record
removed TXT record
tested www.xxzhuti.com in DNS aliyun API
-----------------------------------------------------

------------------  错误的返回 ----------- AKSK配置的权限有问题无法正确添加解析记录
root@zuiyoujie:/opt/scripts/letscertbot# sudo python ./bin/manual.py --test --domain www.xxzhuti.com  --dns aliyun
start to test www.xxzhuti.com in DNS aliyun API
add TXT record(domain=xxzhuti.com, rr=_acme-challenge.letscertbot, value=juXeSRP9mfC14Dop) to aliyun DNS
ERROR:logger:aliyun#__request raise urllib2.HTTPError: HTTP Error 400: Bad Request
HTTP Error 400: Bad Request
--------------------------------------------

 

执行完命令后,看你是否能正确返回,我猜想你一定会报错,那是因为我们还需要配置阿里云的key和密钥。在上一步 config.json 中,我们需要填写邮箱,阿里云的key和密码,你若是别的云服务器,填写对应的即可,我这里以阿里云为例说明如何获取。

找到你右上角头像管理那的 accessKey管理,点击进去,然后创建子用户,即可生成对应的Key和密钥,给子用户添加 AliyunDNSFullAccess 权限。

这步完成后,再次执行测试命令,若是出现正确信息,即可。

生成证书命令

# 证书生成目录,软链接
ll /etc/letsencrypt/live/

# 证书文件目录
ll /etc/letsencrypt/archive/

python ./bin/obtain.py -d www.xxzhuti.com --cert www.xxzhuti.com
python ./bin/obtain.py -d *.xxzhuti.com --cert all.xxzhuti.com

python ./bin/obtain.py -d *.xxzhuti.com --cert all.xxzhuti.com

python ./bin/obtain.py -d *.xxzhuti.com --cert all.xxzhuti.com --dns aliyun --challenge-alias _acme-challenge.xxzhuti.com


-d 指定申请证书的域名
--cert 指定生成的证书文件的名称

最后按照之前的教程将证书设置为自动更新即可,自动更新脚本下方获取。

特别提醒

ssl-cert-check 证书检查命令可以通过下载,或者 apt-get install ssl-cert-check 安装都可以,检测域名命令

sudo ./ssl-cert-check -c /etc/letsencrypt/live/www.xxzhuti.com/fullchain.pem

ssl-cert-check 命令详解

ssl-cert-check 是一个用于检查 SSL 证书到期时间的命令行工具。以下是使用 ssl-cert-check 的基本用法:

  1. 1. 安装 ssl-cert-check:首先,确保已在系统上安装了 ssl-cert-check 工具。可以使用类似于下面的命令进行安装(假设您使用的是 Ubuntu/Debian 系统): sudo apt-get install ssl-cert-check
  2. 2. 运行 ssl-cert-check:安装完成后,您可以通过以下方式来运行 ssl-cert-check 命令: ssl-cert-check [选项] 主机名[:端口]
    • [选项]:可以选择性地添加一些选项,如 -c(显示证书详细信息)、-x(显示过期时间以及剩余天数)等。
    • 主机名[:端口]:指定要检查证书的主机名和可选的端口号。默认情况下,使用的是 HTTPS 的默认端口 443。

下面是一些示例:

  • 显示证书的详细信息: ssl-cert-check -c example.com
  • 显示证书的过期时间以及剩余天数: ssl-cert-check -x example.com
  • 检查自定义端口上的证书: ssl-cert-check example.com:8443

资源下载

资源下载
PHP学习网
公众号回复“PHPER7148”获取下载!
请打开微信扫描右边的二维码回复关键字“PHPER7148”也可以微信直接搜索“PHP学习网”关注微信公众号获取。


关注微信公众号『PHP学习网

第一时间了解最新网络动态
关注博主不迷路~

PHP学习网:站内收集的部分资源来源于网络,若侵犯了您的合法权益,请联系我们删除!
分享到:
赞(0)

文章评论

您需要之后才可以评论
0点赞 0评论 收藏 QQ分享 微博分享

PHP学习网

PHP学习网