域名证书管理和更新
server-maintainer项目中使用到的域名证书和申请和更新,可以用acme.sh工具配合renew_and_upload_certs.sh实现。
acme.sh是第三方工具,通过它可以申请泛域名证书。不过部署和更新时,还是用renew_and_upload_certs.sh脚本更方便。这个脚本会根据配置文件domain.list中的域名和服务器连接信息,依次为相关的域名通过acme.sh申请更新并上传到相应服务器~/certs目录下,在远程服务器上,只需将证书链接文件指向这个目录即可。
acme.sh安装和使用
如果没安装 过,可以用curl https://get.acme.sh | sh
检查配置,以及哪些证书在这台服务器上申请 acme.sh --info acme.sh --list
如果没有添加相关的域名服务商的密钥,添加一下: export GD_Key="38...rN" export GD_Secret="J3...XL"
添加新的申请 acme.sh --issue --dns dns_gd -d domain.com -d *.domain.com
或是更完整一点 acme.sh --set-default-ca --server letsencrypt --issue --dns dns_gd --dnssleep 300 -d eccee.com -d *.eccee.com
申请成功后,每个域名都会在~/.acme.sh/下有个目录,里面有相应的证书
如果要使用vpn,为了避免登陆问题,建议MTU的配置如下:
tun-mtu 1400
renew_and_upload_certs.sh 使用
这个脚本中用到SCP需要能免密登陆到远程服务器, 注意为了防止openssl版本不一致引发的问题,建议都用ubuntu 22.04以上的版本
ssh-copy-id -p 10022 -i ~/.ssh/id_ed25519.pub ubuntu@192.168.13.254
在远程服务器把ubuntu加到sudoers中, 查看用sudo grep -n 'NOPASSWD' /etc/sudoers 编辑用sudo visudo 内容:
username ALL=(ALL) NOPASSWD: ALL
%groupname ALL=(ALL) NOPASSWD: ALL
其中 username 是不需要密码即可使用 sudo 的用户名,%groupname 是不需要密码即可使用 sudo 的用户组名。
编辑域名配置文件domain.list
mydomain.com ubuntu@192.168.13.254:1022 /home/ubuntu/certs
domain2.com ubuntu@100.10.10.100:22 /home/ubuntu/certs
运行脚本:
renew_and_upload_certs.sh