安装包
yum -y install ftp expect
- 阿里云账号配置
登录阿里云账号
之后,顺次点击:访问控制
->用户
->新建用户
登陆名:ds
(可自行更改)
显示名:ds
(可自行更改)
拜访形式:编程式拜访
增加权限:AliyunDNSFullAccess
取得新用户的AccessKey ID
、AccessKeySecret
筹备要签发证书的域名
如abc.com
,示意要签发的通配符证书实用于域名abc.com
和*.abc.com
;
留神:每一行只能一个域名!cat > /data/tools/dns << EOFabc.comwx.abc.comyz.abc.comEOF
创立文件夹,下载压缩包,解压,创立链接
mkdir -p /data/tools /data/appcd /data/appwget https://github.com/go-acme/lego/releases/download/v4.3.1/lego_v4.3.1_linux_amd64.tar.gztar -xvf lego_v4.3.1_linux_amd64.tar.gzln -s /data/app/lego/lego /usr/local/bin/lego
环境筹备:环境变量,常用命令自定义
cat > /etc/profile.d/lego_env.sh << EOF#!/bin/bash# 后面新用户的 AccessKey IDexport ALICLOUD_ACCESS_KEY="TS***bp"# 后面新用户的 AccessKeySecretexport ALICLOUD_SECRET_KEY="x0d***ac6"#export ALICLOUD_HTTP_TIMEOUT=300#export ALICLOUD_POLLING_INTERVAL=300#export ALICLOUD_PROPAGATION_TIMEOUT=600export ALICLOUD_TTL=60# ds@ID.onaliyun.com替换为新创建的登录名lego_args="-a --email ds@ID.onaliyun.com --dns alidns"alias legorun='function __legorun() { domain=$1;domains=*.$1;lego $lego_args --domains="$domain" --domains="$domains" run; unset -f __legorun; };cd /data/app/lego && __legorun'alias legorenew='function __legorenew() { domain=$1;domains=*.$1;lego $lego_args --domains="$domain" --domains="$domains" renew --days 35; unset -f __legorenew; };cd /data/app/lego && __legorenew'EOF
使环境变量失效
source /etc/profile.d/lego_env.sh
证书生成脚本
cat >> /data/tools/cou_cert.sh << EOF#!/bin/bash# 其中`shopt`命令是“shell options”的缩写,用来开关shell中的选项;# 开启`expand_aliases`之后`source`命令从新读取和执行记录了`alias`别名设置的bash配置文件。shopt -s expand_aliasessource /etc/profile.d/lego_env.shdnfile=/data/app/lego/.lego/certificates/$1.crtif [ ! -f "$dnfile" ];then legorun $1else legorenew $1fiftpEOF
将脚本通过FTP拷贝到指标服务器
指标服务器配置的FTP Server信息(须要替换):
地址:192.168.16.8
端口:12358
用户名:UserName
明码:UserPwdcat >> /data/tools/auto_copy.sh << EOF#!/bin/bash# fp="/data/app/lego/.lego/certificates/"while read dn passdo /usr/bin/expect <<-ENDspawn /data/tools/cou_cert.sh $dnexpect {"ftp> " {send "!ftp 192.168.16.8 12358\r";exp_continue}"Name (192.168.16.8:root): " {send "UserName\r";exp_continue}"Password:" {send "UserPwd\r"}}expect "ftp> " { send "send $fp$dn.crt x.$dn.pem\rsend $fp$dn.key x.$dn.key\rquit\rquit\r" }expect eofENDdone < /data/tools/dnsEOF
打算工作,增加工作,启动服务,增加开机启动,查看服务状态
echo 0 0 1 * * /data/tools/auto_copy.sh >> /etc/crontabsystemctl start crond & systemctl enable crond & systemctl status crond
- 指标服务器
须要应用FileZilla Server搭建FTP服务器,配置证书、用户名、明码、用户目录(作为证书的专用目录)和对应权限;
依据本人的状况,查看是间接配置证书门路还是再加一层同步操作。
定期重启web服务,确保最新的证书失效。
配置FileZilla Server请参照另一篇文章《用FileZilla搭建FTP服务器及相干问题》 参考文献:
- 用 Lego 实现 Let‘s Encrypt HTTPS 通配符证书
- Lego的版本信息
- Expect免交互
- for循环嵌套expect
- 在线crontab表达式执行工夫计算