使用 acme.sh 签发和自动续期 ssl https 证书

acme.sh 是一个热度非常高的签发和自动续期 https 证书的工具,虽然官网上提供了充分的操作说明,但是不够简洁,本文以在 nginx 中签发和配置http 为例,列出必要的几个简单步骤。

安装

因为网络原因,github 大部分人是不能直接访问的,所以官网的一键安装脚本可能并不好用。推荐自己手工将代码下载下来操作。

1、下载 git 代码

https://github.com/acmesh-official/acme.sh

下载代码》解压缩,文件清单如下:

[root@test acme.sh-master]# ll
total 308
-rwxrwxrwx 1 root root 226257 Dec 11 04:00 acme.sh
drwxrwxrwx 2 root root   4096 Dec 11 04:00 deploy
drwxrwxrwx 2 root root   8192 Dec 11 04:00 dnsapi
-rw-rw-rw- 1 root root   1528 Dec 11 04:00 Dockerfile
-rw-rw-rw- 1 root root  35149 Dec 11 04:00 LICENSE.md
drwxrwxrwx 2 root root   4096 Dec 11 04:00 notify
-rw-rw-rw- 1 root root  22455 Dec 11 04:00 README.md

2、安装acme.sh

指定自己的 Email,安装命令如下:

chmod +x acme.sh
./acme.sh --install -m 365384722@qq.com

按官方说明,安装命令实际上执行了如下3步操作:

  • 创建 acme.sh 并将其复制到当前用户主目录($HOME):~/.acme.sh/ 中,以后签发的所有证书和配置也将放置在此文件夹中。
  • 创建命令别名:acme.sh=~/.acme.sh/acme.sh,此后在任何位置都可以直接使用 acme.sh 命令。
  • 创建每日cron作业,以便在需要时检查和续订证书,可以使用 crontab -l 查看自动配置的作业内容,你也可以使用 crontab -e 自定义时间。

cron 内容如下所示:

24 5 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

安装后,如果想让 acme.sh 别名生效,你可能需要关闭当前ssh会话并重新打开它。

3、启用acme的自动升级

acme.sh --upgrade --auto-upgrade

配置自动升级后,查看 ~/.acme.sh/account.conf 可以看到 AUTO_UPGRADE='1'

签发证书

官网签发证书的方式主要分为3种:

  • 基于 webroot 的方式
  • 手工 TXT 域名解析的方式
  • 自动 API 的方式

如果你希望以后都能自动续期而不需要人工介入,那么你必须选择基于 API 的方式,前两者本文不赘述,详见官网说明。

acme 支持了很多域名服务商,使用参数 --dns 指定,如下基于阿里云自动的方式进行示例:

1、登录阿里云控制台,记录下 AKIDAKSCT

2、执行两条 export 命令设置临时变量

export Ali_Key="<AKID>"
export Ali_Secret="<AKSCT>"

3、执行签发命令,使用 --dns dns_ali 明确阿里云API通道

./acme.sh --issue --dns dns_ali -d *.demo.com -d demo.com

签发成功后,你可以查看配置文件 ~/.acme.sh/account.conf,会发现该配置文件记录了我们 export 的两个值,之所以记录下来是为了后续自动续签使用。

安装证书到Nginx

如下脚本以 nginx 为例,脚本中设置证书的目标位置、证书更新后需要执行什么命令来刷新 nginx 服务使之生效。

acme.sh --install-cert -d goodcol.com \
--key-file       /opt/soft/nginx/ssl/goodcol.com/key.pem  \
--fullchain-file /opt/soft/nginx/ssl/goodcol.com/cert.pem \
--reloadcmd     "docker exec -it nginx-forward nginx -s reload"

因为我的 nginx 是基于docker 的,所有我的 reloadCmd 是对docker 里面的 nginx 进行 reload,其中证书文件是我 nginx 容器挂在宿主机文件的位置。

其他更多内容,详见官方文档。


(END)

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

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

相关文章

PYQT5程序框架

pyqt5程序框架_哔哩哔哩_bilibili 1.UI代码 Qhkuja.py # -*- coding: utf-8 -*-# Form implementation generated from reading ui file Qhkuja.ui # # Created by: PyQt5 UI code generator 5.15.7 # # WARNING: Any manual changes made to this file will be lost when py…

基于MobileNet v2模型的口罩实时检测系统实现

基于kaggle数据集训练的模型其实现结果如下&#xff1a; 代码结构如下&#xff1a; 实时口罩检测器&#xff1a; 从导航栏中的链接“实时的口罩检测器”功能&#xff0c;该系统包含一个实时检测用户是否佩戴口罩的功能。基于图片的口罩检测器&#xff1a; 从另一个导航链接“基…

高效项目托管指南:从本地到 GitHub 的完整流程

在现代软件开发中&#xff0c;将项目托管在 GitHub 上是一个常见且高效的方式。GitHub 不仅可以用作版本控制工具&#xff0c;还能帮助你与团队协作或展示自己的项目。本文将带你一步步完成项目的打包和上传。 高效项目托管指南&#xff1a;从本地到 GitHub 的完整流程 1. 准备…

用TPS54531绘制BUCK电路板

首先&#xff0c;这TPS54531 是一款非同步降压转换器芯片&#xff08;异步&#xff09;。 这是BUCK的基本原理图&#xff0c;它是异步的。 我们用这款芯片来控制MOS管的高频开关&#xff0c;以此实现降压。 这里使用的应该是CCM模式。 这里&#xff1a; Vi为24V&#xff0c;…

【新人系列】Python 入门(十六):正则表达式

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12801353.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Python 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…

人工智能增强的音频和聊天协作服务

论文标题&#xff1a;AI-enabled Audio and Chat Collaboration Services 中文标题&#xff1a;人工智能增强的音频和聊天协作服务 作者信息&#xff1a; Emil P. Andersen, Norwegian Defence Research Establishment (FFI), Kjeller, NorwayJesper R. Goksr, Sindre E. Ha…

【原创】- 澳门预约医疗系统 - 一个基于Vue3编写的程序

在空余时间写了一个前端预约医疗系统&#xff0c;用Vue3写的一套前端模块&#xff0c;里面数据都是本地模拟&#xff0c;一个练手的简单项目。 此项目主要功能有&#xff1a; 1.预约挂号、挂号记录 2.疫苗接种 3.就医记录 4.科室导航 5.AI问诊 6.个人病例 7.支付可配置化 8.健康…

Cadence学习笔记 3 MCU主控原理图绘制

基于Cadence 17.4&#xff0c;四层板4路HDMI电路 更多Cadence学习笔记&#xff1a;Cadence学习笔记 1 原理图库绘制Cadence学习笔记 2 PCB封装绘制 目录 3、MCU主控原理图绘制 快捷键总结&#xff1a; 3、MCU主控原理图绘制 新建原理图Design&#xff0c;选择好SCH文件夹&…

vue2实现答题组件

需求 实现一个答题组件&#xff0c;点击正确的选项&#xff0c;该选项背景变绿色&#xff1b;点击错误的选项&#xff0c;该选项背景变红色。不管点击了什么选项&#xff0c;延迟一秒后切换下一题。 每次出题&#xff0c;从题库中选随机选择一道用户此次进入这个页面后还没有…

3D相框案例讲解(详细)

前言 通过现阶段的学习&#xff0c;我们已经掌握了HTML&#xff0c;CSS和JS部分的相关知识点&#xff0c;现在让我们通过一篇案例&#xff0c;来巩固我们近期所学的知识点。 详细视频讲解戳这里 任务一 了解目标案例样式 1.1了解案例 3D相框 1.2 分析案例 首先我们看到一个…

SuperMap GIS基础产品FAQ集锦(20241216)

一、SuperMap iDesktopX 问题1&#xff1a;想问一下 SuperMap iDesktopX可以修改倾斜入库后数据的位置吗 11.2.1 【解决办法】在配置文件&#xff08;*.scp&#xff09;中找打position属性&#xff0c;修改其中的xyz值&#xff0c;用于改变位置&#xff1b;修改后如果想要相机…

2.11.静态链表

一.静态链表的基本概念&#xff1a; 1.上图说明&#xff1a;索引为0处是头结点&#xff0c;头结点不存储数据&#xff0c;但存储下一个结点的数组下标&#xff0c;本例中头结点里存储的下一个结点的数组下标为2&#xff0c;即索引为2的结点为头结点后的第一个结点&#xff0c;以…

【Childishness and Playfulness】

奥迪双钻&#xff0c;旋风冲锋龙卷风&#xff0c;巨无霸 智能芯片 东西南北中&#xff0c;好像已经忘了怎么折叠了&#xff0c;折千纸鹤&#xff0c;折小船&#xff0c;折舞狮&#xff0c;折飞机 红外线小灯&#xff0c;纽扣电池&#xff0c;各种形状投影 爷爷的手电筒&am…

【C++初阶】第9课—标准模板库STL(string_3)

文章目录 1. string类对象的查找操作1.1 c_str返回c格式字符串1.2 substr获取string类对象子串1.3 find和rfind查找字符串内容1.4 find_first_of与find_first_not_of1.5 find_last_of与find_last_not_of1.6 copy复制string类对象内的字符串内容1.7 compare对比string类字符串1.…

关于目标检测YOLO 各版本区别v1-v11/vX/vR

概述 YOLO&#xff08;You Only Look Once&#xff0c;你只看一次&#xff09;是一系列开创性的实时目标检测模型&#xff0c;它们彻底改变了计算机视觉领域。由Joseph Redmon开发&#xff0c;后续版本由不同研究人员迭代&#xff0c;YOLO模型以其在图像中检测对象的高速度和准…

海康摄像头,WEB有插件开发

1.引用js <script type"text/javaScript" src"./hk/webVideoCtrl.js"></script> <script type"text/javaScript" src"./hk/cryptico.min.js"></script> <script type"text/javaScript" src"…

【教程】如何下载WandB平台的运行数据?

【教程】如何下载WandB平台的运行数据&#xff1f; 前言 CSDN主页&#xff1a;https://blog.csdn.net/rvdgdsva 博客园主页&#xff1a;https://www.cnblogs.com/hassle Weights & Biases (WandB)是一个用于机器学习的平台&#xff0c;它提供了一套工具来帮助你跟踪、比…

vscode设置终端代理

转载请标明出处&#xff1a;小帆的帆的博客 设置终端代理 修改项目的.vscode/settings.json {"terminal.integrated.env.windows": {"http_proxy": "http://127.0.0.1:7890","https_proxy": "http://127.0.0.1:7890"}, }…

【Linux】自定义项目-进度条

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 准备工作&#xff1a;"\r"与"\n"字符 ①&#xff1a;基本含义 在C语言和Linux环境中&#xff0c;\r是回车符&#xff0c;\n是换行符&#xff0c;用于控制文本格式和输出…

Linux从0到1——初识线程【什么是线程/线程控制/详解tid】

Linux从0到1——初识线程 1. 什么是线程&#xff1f;1.1 线程的概念1.2 结合代码理解线程1.3 重谈地址空间1.4 线程的优缺点 2. 线程异常和线程用途3. Linux进程VS线程4. 详解pthread_create的arg参数4.1 给线程传参4.2 一次创建多个线程 5. 线程控制5.1 线程退出5.2 线程分离5…