告别焦虑:使用 acme 实现 ssl 免费证书到期自动更新

news2024/9/22 13:25:14

文章目录

  • 前言
  • 什么是 ACME 协议?
  • ACME 使用指南
    • 安装
      • 下载
      • 使用 `gitee` 下载
      • 设置别名(非必要)
      • 注册账号
      • 更改证书生成方式
      • 生成证书
      • 重新生成证书并认证
        • 安装 SSL 证书
      • 使用 SSL 证书
      • 验证
    • 配置证书自动续期
      • 证书续期命令
      • 自动续期
      • 查看添加的定时任务 `crontab -l`
  • 总结
  • 个人简介

前言

  • 随着互联网安全的重要性日益增加,SSL 证书已成为保护用户数据和隐私的必备工具。然而,许多免费 SSL 证书的有效期仅为三个月,这就意味着网站管理员需要频繁地更新证书。频繁的手动更新不仅耗时费力,还容易因为疏忽而导致证书过期,从而影响网站的正常运行。
  • 起初我需要每三个月手动更新证书,不仅费时费力还容易忘记,一个偶然的机会我发现了 ACME 这个工具,实现了 SSL 证书自动续期,让我告别焦虑,解放双手,下面就让我来介绍一下这个有意思的工具。

什么是 ACME 协议?

  • ACME(Automatic Certificate Management Environment)协议是由 Let’s Encrypt 推出的自动化 SSL 证书管理协议。通过 ACME 协议,网站管理员可以轻松地自动申请、更新和管理 SSL 证书,完全告别手动操作的烦恼。

ACME 使用指南

安装

下载

curl https://get.acme.sh | sh

或者

wget -O - https://get.acme.sh | sh
  • 由于acme.sh下载地址在国外,国内用户可能会出现下载超时无法安装的情况,下面介绍通过从gitee上下载安装包的安装方式

使用 gitee 下载

git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh

设置别名(非必要)

  • 修改 shell 配置文件中,例如 .bashrc、.bash_profile 或 .zshrc 等
vim ~/.bashrc
alias acme.sh=/root/acme.sh/acme.sh
// 使更改立即生效
source ~/.bashrc

注册账号

acme.sh --register-account -m email@expmple.com

更改证书生成方式

  • acme被ZeroSSL收购,其默认的证书方式为ZeroSSL,但此证书生成时会携带邮箱,因此更换为letsencrypt。
  • 当然,也可以在生成证书时加一个–server参数来决定生成什么证书 --server letsencrypt

生成证书

  • 使用 acme.sh --issue 命令生成证书,但生成证书的同时会进行域名的所有权的验证。 acme.sh 有两种方式验证:http 和 dns 验证。
  • 注意:如果需要生成泛域名(*.a.com)的证书,不能使用HTTP认证域名,需要改用DNS认证的方式,本文介绍 dns 的方式。
acme.sh  --issue  --dns -d mydomain.com \
 --yes-I-know-dns-manual-mode-enough-go-ahead-please

  • 将上述txt解析添加到域名管理面板中

重新生成证书并认证

 acme.sh  --renew   -d mydomain.com \
  --yes-I-know-dns-manual-mode-enough-go-ahead-please

安装 SSL 证书
  • 默认生成的证书都会放在安装目录下:~/.acme.sh/。然而,不要在服务器中直接引用该目录下的证书文件,也不要手动将证书文件拷贝到具体的 web 服务器中,因为手动拷贝会导致之后的证书更新流程无法完全自动化。
  • 正确的方式是使用 acme.sh 的安装证书命令,这样 acme.sh 会自动将证书文件拷贝到指定的目录中,并记录下拷贝命令。在之后的自动更新过程中,acme.sh 会执行该拷贝步骤,从而实现证书更新流程的完全自动化。
acme.sh --install-cert -d xxx \
		--cert-file xxx \
		--key-file xxx \
		--fullchain-file xxx\
		--reloadcmd xxx  // 服务重新加载命令

  • 由于我使用的是 docker 运行的 nginx ,因此我的重载命令是 docker container restart nginx,如果你直接使用 nginx 可以使用命令 service nginx force-reload

使用 SSL 证书

  • 上述命令会将证书按照在我们的指定目录,接下来我们只需要在 web 服务器中使用即可。
  • 以 nginx 为例:
server {
  listen       443 ssl;
  ssl_certificate      /etc/nginx/cert_file/fullchain.pem;
  ssl_certificate_key  /etc/nginx/cert_file/key.pem;
  # ...
}
  • 第一次配置需要重新执行一次 acme.sh --install-cert 命令重启 web 服务。

验证

  • 打开我们配置的网站,发现完美的绿色,强迫症患者不再焦虑。

配置证书自动续期

  • 如果我们使用 curl https://get.acme.sh | sh 方式安装,续期任务会自动在定时任务中配置;如果使用 gitee 则需要我们手动配置。

证书续期命令

  • ACME 支持使用 acme.sh --cron 命令进行证书续期。

自动续期

  • 为了实现自动续期,我们只需要将续期命令添加到定时任务即可。使用 crontab -e 添加定时任务。
设置每月执行一次的定时任务(每月第一天)
0 0 1 * * acme.sh --cron > /root/acme.sh/acme_cron.log 2>&1

查看添加的定时任务 crontab -l

总结

  • 通过使用 acme.sh 工具,我们轻松实现 SSL 证书的自动申请和更新,不再需要为频繁的手动操作而烦恼。这不仅提高了工作效率,还确保了网站的安全性和稳定性。告别手动更新 SSL 证书的焦虑。

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1997111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

haproxy基础

目录 1 HAProxy介绍 1.1 版本对比 1.2 HAProxy功能 2 参数介绍与实践 2.1 global参数说明 2.2 真实代码格式实例 2.3 常用全局参数 2.3.1 nbproc -- 开启几个进程 2.3.2 cpu-map(CUP绑定) 2.3.3 nbthread 2 --开启2个线程 3 Proxies配置 3.1 Proxies配置-defaults 3.2 Proxi…

dolphinscheduler版本差异的配置造成的故障处理

dolphinscheduler1.3.4的common.properties的配置 [root@dbos-bigdata-test003 conf]# vim /opt/dolphinscheduler/conf/common.properties 下面的这个配置中8088直接在配置成端口即可 yarn.application.status.address=http://yarnIp1:8088/ws/v1/cluster/apps/%s dolphin…

守护历史文化瑰宝,RFID藏品管理系统助力文物保护

在中国悠久的历史长河中,有一座蕴藏着千年文化的古老建筑。这座建筑曾经是伟大文人杜甫的居所,承载着他卓越的文学成就和丰富的人生经历。然而,这样一座历史文化瑰宝的保护和管理一直面临着诸多挑战。 为了解决这一难题,我…

运维工具的衍化对运维工作的新挑战

运维工具的衍化对运维工作产生了深远的影响,这些影响体现在多个方面,包括提升运维效率、优化资源配置、增强故障应对能力、促进团队协作与沟通,以及面临新的挑战如数据安全和隐私保护等。运维工具的衍化对运维工作带来了多方面的新挑战&#…

用户体验至上:9款软件界面设计工具分享

你知道如何选择正确的UI设计软件吗?您知道哪些界面设计软件需要设计美观的用户界面,以及带来良好用户体验的APP吗?根据APP界面的不同功能,制作软件界面的选择也会有所不同。但是,并非要非常精通所有的制作软件界面&…

k8s集群管理 Pod管理命令

k8s集群管理命令 信息查询命令 子命令说明help用于查看命令及子命令的帮助信息cluster-info显示集群的相关配置信息api-resources查看当前服务器上所有的资源对象api-versions查看当前服务器上所有资源对象的版本config管理当前节点上的认证信息 资源对象概述 Pod概述 Pod 管…

vscode 快速生成vue 格式

1.用快捷Ctrl Shift P唤出控制台 输入“Snippets”并选择 Snippets: Configure User Snippets 2.输入vue,选中vue.json vs code自动生成vue.json文件 3.在 vue.json 中添加模板 {"Print to console": {"prefix": "vue2","b…

MATLAB计算心理声学烦恼度例子

本例中,通过检测发动机噪音,并结合心理声学参数,评估了其响度、尖锐度、波动强度、粗糙度及整体心理声学烦恼度。接着,模拟了隔音材料的添加,并对噪音水平进行了重新评估。比较分析后,展示了隔音材料对降低…

【学习笔记】Matlab和python双语言的学习(动态规划)

文章目录 前言一、动态规划动态规划的基本步骤示例1示例2 三、代码实现----Matlab1.示例12.示例2 四、代码实现----python1.示例12.示例2 总结 前言 通过模型算法,熟练对Matlab和python的应用。 学习视频链接: https://www.bilibili.com/video/BV1EK411…

Spring AOP 原理——代理模式

目录 一、代理模式 1.1 静态代理 1.2 动态代理 1.2.1 JDK动态代理 1.2.2 CGLIB动态代理 Spring AOP 是基于动态代理来实现AOP的。 一、代理模式 代理模式, 也叫委托模式。该模式是为其他对象提供⼀种代理以控制对这个对象的访问。它的作用就是通过提供一个代理类&#…

50 mysql 的 “where 1 = 1“ 的优化处理

前言 问题是来自于 chinaunix 问题 ”mysql查询后面加 where 1 1 影响效率吗?” mysql 中在 java 代码中我们经常会使用到 ”where 1 1 and username ‘jerry’ ” 之类的条件 然后 我们这里 来看一下 “where 1 1” 的相关处理 where 条件在 select_lex, QUP_shared…

RPC Dubbo面试题汇总

文章目录 RPCRPC 是什么?RPC的原理是什么?有哪些常见的 RPC 框架?RPC和HTTP的区别 Dubbo什么是Dubbo?为什么要用Dubbo?Dubbo 的核心组件?Dubbo 支持哪些序列化方式呢?Dubbo 集群提供了哪些负载均衡策略?D…

Java中等题-交错字符串(力扣)

给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串 &#xff1a; s s1 s2 ... snt t1 t2 ... tm|n - m| < 1交错 是…

批发行业进销存-手持打单机办理会员 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、手持终端办理会员必备条件 1.手持机的有点可以打印单据开单 2.手持通过接口将数据传到进销存 3.需要支持刷卡&#xff0c;感应身份证&#xff0c;各种卡 4.考虑到网络和工厂&#xff0c;向下无网络环境&#xff0c;数据需要放本地 二、会员办理界面代码 <form id&…

集合练习专题

第一题 public static void main(String[] args) {ArrayList arrayList new ArrayList<>();arrayList.add(new News(" 新冠确诊病例超千万&#xff0c;数百万印度教信徒赴恒河\"圣浴\"引民众担忧"));arrayList.add(new News("男子突然想起2个…

EasyExcel-读Excel-不创建对象的读-合并单元格的处理

EasyExcel官方文档 这几天需要读取excel的内容&#xff0c;但是excel中存在多个sheet页&#xff0c;每个sheet页的标题不同&#xff0c;数据不同&#xff0c;而且多个excel文件。决定使用easyexcel处理&#xff0c;但是感觉无法使用对象接收exceld的数据&#xff0c;所以决定使…

使用 Node.js 模拟执行 JavaScript

准备工作 正确安装好 Node.js ,安装好之后&#xff0c;能正常使用 node 和 npm 两个命令 模拟执行 关于案例分析 写文章-CSDN创作中心 这里就不做分析了&#xff0c;直接使用 我们的目的是&#xff1a; 使用 node.js 加载 Crypto 库&#xff0c; 并执行 getToken 方法 …

Linux驱动开发基础(LED驱动)

所学来自百问网 目录 1. LED原理 2. 普适的GPIO引脚操作方法 2.1 GPIO模块的一般结构 2.2 GPIO框图 2.3 寄存器的操作 2.3.1 一般的操作方式 2.3.2 高效的操作方式 3. 基于IMX6UL_6ULL的GPIO操作方法 3.1 GPIO框图 3.2 CCM 3.3 IOMUXC 3.4 GPIO模块内部 3.5 读写…

软件评审-需求评审、设计评审、编码评审、测试评审(原件)

1.需求规格说明评审报告 2.系统设计评审报告 3.编码与测试评审报告 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0…

工业大数据来自哪里?大数据技术如何助力制造企业数字化转型?

信息技术的迅猛发展正在重塑我们的世界&#xff0c;不仅改变了技术本身&#xff0c;也深刻影响了全球市场和人们的工作与生活方式。在工业生产这一关键领域&#xff0c;高性价比、长续航的微型传感器的诞生&#xff0c;以及物联网等新一代网络技术的兴起&#xff0c;正赋予无数…