赞
踩
关键字: DSM ssl 证书
群晖下自建服务(alist3)和系统服务在外部网络访问需要加ssl安全证书来实现基础的传输保护。
申请证书和续期手动操作都还好,不算太麻烦,但是每个应用单独证书需要复制和重启,再配合服务重启一套下来就比较麻烦了,于是有了这篇文章和末尾的ssl自动续期和证书自动复制及服务自动重启脚本。
免费ssl证书的申请,一般是let's encrypt 或者 Trust Asia ,泛域名三个月续期。手动操作比较繁琐,且三个月操作一次更加的繁琐。
自动化ssl续期/申请工具有:
本来打算直接用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
- EOF
-
- chmod 644 /etc/letsencrypt/credentials.ini
-
-
- # 申请命令
- certbot certonly \
- --authenticator=dns-aliyun \
- --dns-aliyun-credentials=' /etc/letsencrypt/credentials.ini' \
- -d example.com\
- -d "*.example.com"
-
-
-
- # 手动续期
- cerbot renew -q
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
这里来讲一下本文的主要目的:
1. 自动续期脚本
2. 复制证书并重启alist
3. 复制证书并重启 nginx
具体路径自己更改
- #! /bin/bash
-
- is_updated="false"
-
- check_file_md5_and_replace(){
- file1="$1"
- file2="$2"
-
- # 检查文件是否存在
- if [ ! -f "$file1" ] || [ ! -f "$file2" ]; then
- echo "Error: Both files must exist."
- return 1
- fi
-
- # 计算文件的MD5摘要
- md5_file1=$(md5sum "$file1" | awk '{print $1}')
- md5_file2=$(md5sum "$file2" | awk '{print $1}')
-
- # 比较MD5摘要
- if [ "$md5_file1" != "$md5_file2" ]; then
- echo "MD5 mismatch. Copying $file1 to $file2."
- cp "$file1" "$file2"
- is_updated="true"
- echo "Copy complete."
- else
- echo "MD5 match. No action needed."
- fi
- }
-
- # 需要续期的域名,自行修改
- domain=example.com
-
- ssl_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" ]; then
- synopkg restart alist3
- is_updated="false"
- 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.pem
-
- check_file_md5_and_replace ${ssl_cert} ${target_ssl_cert}
- if [ "$is_updated" = "true" ]; then
- systemctl 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
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
群晖下套件采用 synopkg 管理
系统服务使用 systemctl 管理
参考来源
使用 Certbot 自动申请并续订阿里云 DNS 免费泛域名证书_tabsp的博客-CSDN博客
Certbot免费证书的安装·使用·自动续期_certbot renew_BlackRockZero的博客-CSDN博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。