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

使用 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.lryc.cn/news/504674.html

相关文章:

  • spring重点面试题总结
  • 新的一章:codegeex
  • 游戏引擎学习第50天
  • 快速理解类的加载过程
  • 医院跌倒检测识别 使用YOLO,COCO ,VOC格式对4806张原始图片进行标注,可识别病人跌倒,病人的危险行为,病床等场景,预测准确率可达96.7%
  • [Unity Shader] 【游戏开发】【图形渲染】Unity Shader的种类2-顶点/片元着色器与固定函数着色器的选择与应用
  • 浏览器端的 js 包括哪几个部分
  • GoogLeNet网络:深度学习领域的创新之作
  • 深入C语言文件操作:从库函数到系统调用
  • Java序列化
  • 基坑表面位移沉降倾斜自动化监测 非接触式一体化解决机器视觉
  • 提升效率:精通Windows命令行的艺术
  • ESP32-S3-devKitC-1 点亮板上的WS2812 RGB LED
  • python调用matlab函数(内置 + 自定义) —— 安装matlab.engine
  • CAD c# 生成略缩图预览
  • 端点鉴别、安全电子邮件、TLS
  • 汽车电子元件的可靠性保障:AEC-Q102认证
  • 主成分分析法大全(包括stata+matlab)
  • ubuntu+ros新手笔记(五):初探anaconda+cuda+pytorch
  • C++ List(双向链表)
  • ASP.NET|日常开发中读写TXT文本详解
  • 【机器学习】在不确定的光影中:机器学习与概率论的心灵共舞
  • 【论文笔记】Editing Models with Task Arithmetic
  • ESP32外设学习部分--UART篇
  • ssm-day04 mybatis
  • es中段是怎么合并的
  • 5、可暂停的线程控制模型
  • sql优化--mysql隐式转换
  • Scratch021(画笔)
  • Leetcode 3387. Maximize Amount After Two Days of Conversions