辽宁城乡建设集团网站,素材网站哪个最好,成都营销型网站制作公司,做教育培训网站需要资质么关键字#xff1a; DSM ssl 证书 起因
群晖下自建服务(alist3)和系统服务在外部网络访问需要加ssl安全证书来实现基础的传输保护。 申请证书和续期手动操作都还好#xff0c;不算太麻烦#xff0c;但是每个应用单独证书需要复制和重启#xff0c;再配合服务重启一套下来就…关键字 DSM ssl 证书 起因
群晖下自建服务(alist3)和系统服务在外部网络访问需要加ssl安全证书来实现基础的传输保护。 申请证书和续期手动操作都还好不算太麻烦但是每个应用单独证书需要复制和重启再配合服务重启一套下来就比较麻烦了于是有了这篇文章和末尾的ssl自动续期和证书自动复制及服务自动重启脚本。
方案
免费ssl证书的申请一般是lets encrypt 或者 Trust Asia 泛域名三个月续期。手动操作比较繁琐且三个月操作一次更加的繁琐。
自动化ssl续期/申请工具有
acme.sh (基于linux原生shell不需要额外的安装其他东西但是可能一些非常规linux 系统下会有问题比如群晖内linux)certbot (基于python可以用acme代理认证或者直接域名服务商dns更新大部分云厂商都有插件支持)keyManager (Windows下可以自动部署到服务器)......
本来打算直接用acme.sh但是不知道为什么我这边群晖下(ssh 登录群晖终端) acme.sh 总是openssl报错懒得去动系统内的依赖(openssl动了可能影响很多东西)搜了下发现certbot也完整实现了acme协议基于python实现的。
安装 certbot(直接pip 安装就行) 以及 ssl续期 网上有很多教程就不详细介绍了脚本中域名和路径、accesskey等自行更改。
# ssh
ssh 192.168.1.100# root权限
sudo su -# 插件按需安装就行
pip3 install certbot certbot-dns-aliyun certbot-dns-cloudflare certbot-auth-dnspod# 这里用阿里云演示
### 配置文件
mkdir -p /etc/letsencrypt/cat /etc/letsencrypt/credentials.ini EOF
dns_aliyun_access_key 12345678
dns_aliyun_access_key_secret 1234567890abcdef1234567890abcdef
EOFchmod 644 /etc/letsencrypt/credentials.ini# 申请命令
certbot certonly \
--authenticatordns-aliyun \
--dns-aliyun-credentials /etc/letsencrypt/credentials.ini \
-d example.com\
-d *.example.com# 手动续期
cerbot renew -q流程及脚本
这里来讲一下本文的主要目的
1. 自动续期脚本
2. 复制证书并重启alist
3. 复制证书并重启 nginx
具体路径自己更改
#! /bin/bashis_updatedfalsecheck_file_md5_and_replace(){file1$1file2$2# 检查文件是否存在if [ ! -f $file1 ] || [ ! -f $file2 ]; thenecho Error: Both files must exist.return 1fi# 计算文件的MD5摘要md5_file1$(md5sum $file1 | awk {print $1})md5_file2$(md5sum $file2 | awk {print $1})# 比较MD5摘要if [ $md5_file1 ! $md5_file2 ]; thenecho MD5 mismatch. Copying $file1 to $file2.cp $file1 $file2is_updatedtrueecho Copy complete.elseecho MD5 match. No action needed.fi
}# 需要续期的域名自行修改
domainexample.comssl_cert/etc/letsencrypt/live/${domain}/cert.pem
ssl_chain/etc/letsencrypt/live/${domain}/chain.pem
ssl_fullchain/etc/letsencrypt/live/${domain}/fullchain.pem
ssl_privkey/etc/letsencrypt/live/${domain}/privkey.pem# renew ssl certs
/usr/bin/certbot renew -q# update alist3 certs
target_ssl_fullchain/volume1/appdata/alist3/cert.crt
target_ssl_privkey/volume1/appdata/alist3/pri.key
check_file_md5_and_replace ${ssl_fullchain} ${target_ssl_fullchain}
if [ $is_updated true ]; thensynopkg restart alist3is_updatedfalse
fi
check_file_md5_and_replace ${ssl_privkey} ${target_ssl_privkey}# update syno default certs
target_path/usr/syno/etc/certificate/_archive/VpBstU
target_ssl_cert${target_path}/cert.pem
target_ssl_chain${target_path}/chain.pem
target_ssl_fullchain${target_path}/fullchain.pem
target_ssl_privkey${target_path}/privkey.pemcheck_file_md5_and_replace ${ssl_cert} ${target_ssl_cert}
if [ $is_updated true ]; thensystemctl restart nginx
fi
check_file_md5_and_replace ${ssl_chain} ${target_ssl_chain}
check_file_md5_and_replace ${ssl_fullchain} ${target_ssl_fullchain}
check_file_md5_and_replace ${ssl_privkey} ${target_ssl_privkey}# 查看证书信息
# openssl x509 -in VpBstU/fullchain.pem -text -noout|grep DNS
群晖下套件采用 synopkg 管理
系统服务使用 systemctl 管理 参考来源
使用 Certbot 自动申请并续订阿里云 DNS 免费泛域名证书_tabsp的博客-CSDN博客
Certbot免费证书的安装·使用·自动续期_certbot renew_BlackRockZero的博客-CSDN博客
查看 PEM DER 格式证书命令_centos查看pem证书命令_maimang09的博客-CSDN博客