lego+systemctl实现SSL泛解析证书注册并自动更新

首先感谢@Negoces 大佬的悉心指导,这篇文章主要是记录一下如何操作

愿天堂没有SSL

—-《小满1221》

了解什么是泛解析SSL证书

一、我们要先了解一下泛解析SSL证书是什么,泛解析SSL证书使用户可以在一个证书上为一个域名在特定级别上保护无限数量的子域。泛解析采用的是*符号替代,可以保护域名旗下任何自定义的子域名。但如果三级域名需要泛解析就必须申请二级域名的SSL证书才可以,这个特性会让我们后续的维护操作变得很简单(不用费时间续订证书了)

注意:
1、实现这个操作需要使用DNS记录验证域名
2、一个泛域名SSL证书只能覆盖一个主域。如果只需要保护多个主域,则应选择一个多域泛域名SSL证书。
3、申请下来的证书有效期一般较短(90天)

二、我们了解了一些关于SystemCtl的基础知识
Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。
这些命令在几乎所有的Linux发行版上都有他的身影,他是一个很强大的命令,负责调用系统的所有资源(说法存在歧义,请理性指出)具体命令详解请点击:CSDN

三、付费

咳咳(说错了

三、了解这次需要使用的软件:lego,这是一个开源软件:Github

Tips: 本站提供国内加速.

我们进入服务器Shell,然后使用wget下载lego软件。

# 下面链接适用:Linux/Amd64

~$ wget https://proxy.github.site/https://github.com/go-acme/lego/releases/download/v4.6.0/lego_v4.6.0_linux_amd64.tar.gz
# 解压文件到/opt/lego
~$ mkdir -p /opt/lego && tar -zxvf lego_v4.6.0_linux_amd64.tar.gz -C /opt/lego
# 创建软连接
~$ ln -s /opt/lego/lego  /usr/local/bin/
# 这时候我们的软件配置就可以正常了,输入以下命令测试:
~$ lego -v
# 成功会显示版本 系统 架构信息
lego version 4.6.0 linux/amd64

因为这里是SSL泛解析,我们只能使用DNS解析来验证我们的域名所有权
LEGO提供了很多DNS供应商的验证方法:相关文档
由于篇幅问题,本人在这里(和脚本)演示DNSPOD和AliDNS的配置方法。

这里因为DNSPOD被腾讯云收购,所以在文档页面不要找DNSPOD,找TENCENT CLOUD DNS

DNSPOD获取密钥和脚本配置

首先我们打开DNSPOD的官网:https://dnspod.cn/
然后我们登录,点击右上角头像下面的API管理,直达链接
如果有则不用创建。我们复制这两个值备用。
我们输入:vim /opt/lego/lego-renew.sh #新建一个脚本文件

Tips:如果显示未找到命令,说明您的主机没有此程序,您可以试试vi /opt/lego/lego-renew.sh

Debian/Ubuntu:apt install vim -y | Red Hat/CentOS: yum install vim -y

官方实例:

TENCENTCLOUD_SECRET_ID=abcdefghijklmnopqrstuvwx \
TENCENTCLOUD_SECRET_KEY=your-secret-key \
lego --email you@example.com --dns tencentcloud --domains my.example.org run

Tips:最后的run是第一次申请的时候使用的,后台挂Timer需要替换成renew

TENCENTCLOUD_SECRET_ID=abcdefghijklmnopqrstuvwx \
TENCENTCLOUD_SECRET_KEY=your-secret-key \
LEGO_PATH=/path/to/ca/ \
lego --email you@example.com --dns tencentcloud --domains my.example.org run

Tips:这里建议先使用Shell运行一次官方示例,方便以后续订TImer

#!/bin/bash
# /opt/lego/lego-renew.sh
export TENCENTCLOUD_SECRET_ID="your secret id"
export TENCENTCLOUD_SECRET_KEY="your secret key"
export LEGO_PATH="/path/to/ca/"
echo "Renew ing…"
/opt/lego/lego –email="you@example.com" –domains="example.org" –domains="*.example.org"  –dns="tencentcloud" renew  && echo "Done."

这里建议设置你的LEGO_PATH,否则证书生成到 /用户家目录/.lego
而且证书不能移动,否则可能会续签失败,就是说别生成了久移动走了或者删除了

AliDNS获取密钥和脚本配置

阿里云的的方法和DNSPOD大同小异
首先我们先进入官网:https://www.aliyun.com/
登录后进入后台,鼠标移植头像点击AccessKey 管理,进入 RAM 访问控制
没有就新建一个,有就用那个,可以配置权限

ALICLOUD_ACCESS_KEY=abcdefghijklmnopqrstuvwx \
ALICLOUD_SECRET_KEY=your-secret-key \
LEGO_PATH=/path/to/ca/ \
lego –email you@example.com –dns alidns –domains my.example.org run
#!/bin/bash
# /opt/lego/lego-renew.sh
export ALICLOUD_ACCESS_KEY="your secret id"
export ALICLOUD_SECRET_KEY="your secret key"
export LEGO_PATH="/path/to/ca/"
echo "Renew ing…"
/opt/lego/lego –email="you@example.com" –domains="example.org" –domains="*.example.org"  –dns="alidns" renew  && echo "Done."

Tips:不要把你的任何Key写进环境变量里,因为你永远不知道会不会有恶意程序扫描您主机的环境变量

其他订阅方式请自行查询文档:官方文档

使用Timer调用Service的Unit进行计划任务。
实例:vim /usr/lib/systemd/system/lego-renew.service

[Unit]
Description=Lego Renew ALL Domains
[Service]
ExecStart=sh /opt/lego/lego-renew.sh
[Install]
WantedBy=multi-user.target

实例:vim /usr/lib/systemd/system/lego-renew.timer

[Unit]
Description=Timer – Lego Renew
[Timer]
OnCalendar=Sun *-*-* 02:50:00
Unit=lego-renew.service
[Install]
WantedBy=timers.target

全部保存后

# 启动服务

systemctl start lego-renew.timer
systemctl start lego-renew.service
# 将服务加入开机自启
systemctl enable lego-renew.service
systemctl enable lego-renew.timer

下载权限

查看
  • 免费下载
    评论并刷新后下载
    登录后下载

查看演示

  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余
温馨提示:

1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:xiaoman1221@yhdzz.cn,工作室将第一时间处理!

2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。

3.所有资源仅限于参考和学习,版权归原作者所有。

给TA投喂
共{{data.count}}人
人已投喂
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
搜索