当前位置: 首页 > news >正文

群晖DSM下套件及系统网页服务器ssl证书自动更新

关键字: DSM ssl  证书

起因

群晖下自建服务(alist3)和系统服务在外部网络访问需要加ssl安全证书来实现基础的传输保护。

申请证书和续期手动操作都还好,不算太麻烦,但是每个应用单独证书需要复制和重启,再配合服务重启一套下来就比较麻烦了,于是有了这篇文章和末尾的ssl自动续期和证书自动复制及服务自动重启脚本

方案

免费ssl证书的申请,一般是let's 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 \
--authenticator=dns-aliyun \
--dns-aliyun-credentials=' /etc/letsencrypt/credentials.ini' \
-d example.com\
-d "*.example.com"# 手动续期
cerbot renew -q

流程及脚本

这里来讲一下本文的主要目的:

1. 自动续期脚本

2. 复制证书并重启alist

3. 复制证书并重启 nginx

具体路径自己更改

#! /bin/bashis_updated="false"check_file_md5_and_replace(){file1="$1"file2="$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" "$file2"is_updated="true"echo "Copy complete."elseecho "MD5 match. No action needed."fi
}# 需要续期的域名,自行修改
domain=example.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_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.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博客

相关文章:

群晖DSM下套件及系统网页服务器ssl证书自动更新

关键字&#xff1a; DSM ssl 证书 起因 群晖下自建服务(alist3)和系统服务在外部网络访问需要加ssl安全证书来实现基础的传输保护。 申请证书和续期手动操作都还好&#xff0c;不算太麻烦&#xff0c;但是每个应用单独证书需要复制和重启&#xff0c;再配合服务重启一套下来就…...

【Flink】Flink架构及组件

我们学习大数据知识的时候&#xff0c;需要知道大数据组件如何安装以及架构组件&#xff0c;这将帮助我们更好的了解大数据组件 对于大数据Flink&#xff0c;架构图图下&#xff1a; 整个架构图有三种关键组件 1、Client&#xff1a;负责作业的提交。调用程序的 main 方法&am…...

React Navigation 开发准备

需要 React Native 使用 React Navigation 的话&#xff0c;我们需要首先安装如下几个包&#xff1a; npm install react-navigation/native npm install react-native-screens react-native-safe-area-context开发之前做一些处理 如果您使用的是 Mac 并针对 iOS 进行开发&am…...

前端面试:【前端安全】安全性问题与防范措施

嗨&#xff0c;亲爱的前端开发者&#xff01;在构建Web应用程序时&#xff0c;确保安全性是至关重要的。本文将深入讨论前端开发中的安全性问题&#xff0c;并提供一些防范措施&#xff0c;以确保你的应用程序和用户数据的安全性。 前端安全性问题&#xff1a; 跨站脚本攻击&am…...

[Linux]进程

文章目录 1. 进程控制1.1 进程概述1.1.1 并行和并发1.1.2 PCB1.1.4 进程状态1.1.5 进程命令 1.2 进程创建1.2.1 函数1.2.2 fork() 剖析 1.3 父子进程1.3.1 进程执行位置1.3.2 循环创建子进程1.3.3 终端显示问题1.3.4 进程数数 1.4 execl和execlp函数1.4.1 execl()1.4.2 execlp(…...

01-jupyter notebook的使用方法

一、Tab补全 在shell中输入表达式&#xff0c;按下Tab&#xff0c;会搜索已输入变量&#xff08;对象、函数等等&#xff09;的命名空间&#xff1a; 除了补全命名、对象和模块属性&#xff0c;Tab还可以补全其它的。当输入看似文件路径时 &#xff08;即使是Python字符串&…...

pytestx容器化执行引擎

系统架构 前端、后端、pytest均以Docker容器运行服务&#xff0c;单独的容器化执行引擎&#xff0c;项目环境隔离&#xff0c;即用即取&#xff0c;用完即齐&#xff0c;简单&#xff0c;高效。 前端容器&#xff1a;页面交互&#xff0c;请求后端&#xff0c;展示HTML报告 后…...

(动态规划) 剑指 Offer 42. 连续子数组的最大和 ——【Leetcode每日一题】

❓ 剑指 Offer 42. 连续子数组的最大和 难度&#xff1a;简单 输入一个整型数组&#xff0c;数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为 O(n)。 示例1: 输入: nums [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1…...

OLED透明屏曲面技术:创新突破引领显示行业未来

OLED透明屏曲面技术作为一项重要的显示技术创新&#xff0c;正在成为显示行业的焦点&#xff0c;其引人注目的优势和广泛应用领域使其备受关注。 本文将详细介绍OLED透明屏曲面技术的优势、应用领域以及市场前景&#xff0c;同时展望其未来的发展趋势&#xff0c;以期带给读者…...

视频云存储/安防监控EasyCVR视频汇聚平台分发rtsp流时,出现“用户已过期”提示该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…...

调用paddleocr接口实现文本检测与识别,并在图像中显示识别结果

目录 一、按照官网步骤安装paddlepaddle和paddleocr(paddlepaddle我安装的是cpu版本) 二、运行下面的脚本 三、图像结果 一、按照官网步骤安装paddlepaddle和paddleocr(paddlepaddle我安装的是cpu版本) doc/doc_ch/quickstart.md PaddlePaddle/PaddleOCR - Gitee.com 二、…...

如何提升winform程序性能

提升WinForms程序性能是一个关键的优化任务&#xff0c;以下是一些可以帮助你提升性能的方法&#xff1a; 1. **UI延迟加载&#xff1a;** 如果你的WinForms界面很复杂&#xff0c;可以考虑将不必要的UI元素延迟加载&#xff0c;只在需要时加载&#xff0c;以减少启动时间和内…...

按钮权限控制

搜索关键字&#xff1a; 自定义指令传参| "自定义指令""dataset"|自定义指令dataset| "Vue""directives"|vue按钮权限实现 1、完整代码&#xff1a; <template> <div> <el-breadcrumb separator-class"el-icon…...

【脚本式设置环境变量】

在linux系统中&#xff0c;如果我打开一个软件需要如下操作&#xff0c;那将会是一件很麻烦的事情 cd dir #软件的文件路径 conda deactivate conda activate chatgpt python main.py【首先写一个chatgpt.sh脚本内容如下】 #!/bin/bash cd dir conda run -n chatgpt python m…...

软件开发bug问题跟踪与管理

一、Redmine 项目管理和缺陷跟踪工具 官网&#xff1a;https://www.redmine.org/ Redmine 是一个开源的、基于 Web 的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示&#xff0c;同时它又支持多项目管理。Redmine 是一个自由开源软件解决方案&#xff0c;…...

springboot+mp完成简单案例

目录 1.框架搭建 2.前端搭建 3.后端编写 需求&#xff1a;完成简单的连表条件查询以及添加即可 1.框架搭建 1.创建springboot项目 2.相关依赖 <!--web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boo…...

cuml机器学习GPU库 sklearn升级版AutoDL使用

CUML库 最近在做机器学习任务的时候发现我自己的数据集太大&#xff0c;直接用sklearn 跑起来时间很长&#xff0c;然后问GPT得知了有CUML库&#xff0c;后来去研究了一下&#xff0c;发现这个库只支持linux系统&#xff0c;从官网直接获取下载命令基本上也实现不了最后&#…...

C语言练习题Day1

从今天开始分享C语言的练习题&#xff0c;每天都分享&#xff0c;差不多持续16天&#xff0c;看完对C语言的理解可能更进一步&#xff0c;让我们开始今天的分享吧&#xff01; 题目一 执行下面的代码&#xff0c;输出结果是&#xff08;&#xff09; int x5,y7; void swap()…...

使用kubeadm安装和设置Kubernetes(k8s)

用kubeadm方式搭建K8S集群 kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署&#xff1a; # 创建一个 Master 节点 kubeadm init# 将一个 Node 节点加入到当前集群中 kubeadm join <Master节点的IP和端口…...

Docker安装延迟队列插件

下载插件地址&#xff1a;https://www.rabbitmq.com/community-plugins.html 插件上传服务器 选择跟我们rabbitmq版本一致或者小于的插件即可。版本可在web管理首页查看。 将下载的插件上传到Linux系统上&#xff0c;使用 docker 命令将插件复制到容器内部 plugins目录下 do…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...