自动化部署证书 acme.sh 使用教程

简介

acme.sh 是一个开源的 ACME 协议的客户端工具,用于自动化申请、更新和部署 SSL/TLS 证书。通过使用 acme.sh,用户可以轻松地在服务器上设置 HTTPS 加密连接,而无需手动操作。它支持多种 DNS 接口和证书颁发机构,可以与各种 Web 服务器和 DNS 服务集成,提供了方便的命令行工具和丰富的功能选项。目前 acme.sh 支持 5 个正式环境 CA,分别是 Let’s Encrypt、Buypass、ZeroSSL、SSL.com 和 Google Public CA,默认使用 ZeroSSL。
链接:https://github.com/acmesh-official/acme.sh

配置安装

使用源码安装

git clone --depth 1 https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install -m username@example.com

请注意替换 username@example.com 为你自己的邮箱,避免无法收到上游证书的邮件通知。
安装完成后重新加载 Bash

source ~/.bashrc

开启自动更新

acme.sh --upgrade --auto-upgrade

选择默认 CA

目前 acme.sh 支持 5 个正式环境 CA,分别是 Let’s Encrypt、Buypass、ZeroSSL、SSL.com 和 Google Public CA,默认使用 ZeroSSL,如果需要更换可以使用如下命令:
切换 Let’s Encrypt

acme.sh --set-default-ca --server letsencrypt

切换 Buypass

acme.sh --set-default-ca --server buypass

切换 ZeroSSL

acme.sh --set-default-ca --server zerossl

切换 SSL.com

acme.sh --set-default-ca --server ssl.com

切换 Google Public CA

acme.sh --set-default-ca --server google

如果已有 ZeroSSL 帐号,可以在后台控制面板拿到 API Key,然后执行如下命令:

apt install jq
curl -s -X POST "https://api.zerossl.com/acme/eab-credentials?access_key=你的API_Key" | jq

输出内容如下:

{"success": true,"eab_kid": "kid字符串","eab_hmac_key": "hmac_key字符串",
}

然后手动添加帐号:

acme.sh --register-account  --server zerossl \--eab-kid kid字符串  \--eab-hmac-key hmac_key字符串

Google Public CA 需要按照官方博客申请内测,然后获取 Key。
ps:本篇文章使用Let’s Encrypt来做讲解。

使用DNS API部署

准备 DNS API
通过使用域名服务商提供的 API 密钥,让acme.sh自动创建域名验证记录以申请域名证书. acme.sh 支持全球各种域名服务商的 API ,本文将以阿里云为例.更多 DNS API 支持,请查看https://github.com/acmesh-official/acme.sh/wiki/dnsapi
登陆阿里云控制台 - 访问控制 RAM - 身份管理-用户
创建一个新用户:
在这里插入图片描述
勾选API调用访问:
在这里插入图片描述
复制保存好生成的AccessKey信息
在这里插入图片描述
授权该用户,搜索DNS,并将AliyunDNSFullAccess移动至右侧确定
在这里插入图片描述
根据官方dnsapi获取阿里云的API格式为:

export Ali_Key="LTAI4Fd8J9qs4fxxxxxxxxxx"
export Ali_Secret="Xp3Z7NDOW0CJcPLKoUwqxxxxxxxxxx"

配置 DNS API
acme.sh 程序目录为隐藏目录.acme.sh存放在当前用户家目录下.执行以下命令进入目录,并编辑account.conf,根据上文获取的 API 格式,复制粘贴到文件中保存.

cd ~/.acme.sh
vim account.conf

在这里插入图片描述
ps:目前 account.conf 仅支持一个 DNS API ,多个域名服务商的域名需单独加 --accountconf 参数: 相关 issues 链接https://github.com/acmesh-official/acme.sh/issues/2055

申请证书

自动 DNS 模式标准命令:

acme.sh --issue --server letsencrypt --dns dns_ali -d example.com -d www.example.com

acme.sh:是一个用于管理 SSL 证书、自动续订证书的工具。
–issue:表示要申请证书。
–server letsencrypt:指定使用 Let’s Encrypt 作为证书颁发机构。
–dns dns_ali:指定使用 DNS 验证的方式来验证域名所有权,其中 dns_ali 表示阿里云 DNS 的插件,用于自动化 DNS TXT 记录的添加。
-d example.com -d www.example.com:指定要申请证书的域名,这里是 example.com 和 www.example.com。在申请通配符证书时,需要使用 -d ‘*.example.com’ 这样的格式指定。
使用DNS验证生成证书(包含中间证书)

acme.sh --issue --dns dns_ali -d *.test.com --fullchain-file /home/ecs-user/test.pem --key-file /home/ecs-user/test.key

acme.sh:是一个用于管理 SSL 证书、自动续订证书的工具。
–issue:表示要申请证书。
–dns dns_ali:指定使用 DNS 验证的方式来验证域名所有权,其中 dns_ali 表示阿里云 DNS 的插件,用于自动化 DNS TXT 记录的添加。
-d *.test.com:指定要申请证书的域名,这里是 *.test.com,表示匹配所有 test.com 域名下的子域名。
–fullchain-file /home/ecs-user/test.pem:指定存储完整证书链的文件路径,证书链包括证书以及中间证书。
–key-file /home/ecs-user/test.key:指定存储私钥的文件路径。
这行命令的作用是通过阿里云的 DNS 服务来验证域名所有权,并向 Let’s Encrypt 申请一个包含 *.test.com 的通配符 SSL 证书,然后将证书链存储到 /home/ecs-user/test.pem 文件中,将私钥存储到 /home/ecs-user/test.key 文件中。
在这里插入图片描述
自动部署
acme.sh 还支持自动部署证书到指定目录并重启nginx或apache服务,以确保新证书生效.官方参考如下:

acme.sh --installcert -d example.com \
--key-file       /path/to/keyfile/in/nginx/key.pem  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd     "service nginx force-reload"

nginx.conf配置如下
在这里插入图片描述

验证证书安全等级

链接:https://www.ssllabs.com/
访问上面的链接,点击test you server,然后输入需要验证的域名:
在这里插入图片描述
下图是我的验证结果:
在这里插入图片描述

使用 HTTP 验证签发证书

首先我们要做一下准备工作,假设你域名是 example.com,解析到你的服务器让其生效后,我们建立一个目录:

mkdir -p /var/www/letsencrypt

我们的目的是绑定 http://example.com/.well-known/acme-challenge 到这个目录。
如果用的 Nginx,那么新建一个配置文件:

server {listen 80;listen [::]:80;server_name example.com;location /.well-known/acme-challenge {root /var/www/letsencrypt;}location / {rewrite	^/(.*)$ https://$host/$1 permanent;}
}

我们以 Let’s Encrypt 为例,直接在终端运行:

acme.sh --issue -d example.com -w /var/www/letsencrypt

如果希望签发 ECC 证书,则运行

acme.sh --issue -d example.com --keylength ec-256 -w /var/www/letsencrypt

如果需要多个域名,则运行

acme.sh --issue -d example.com -d example.org -w /var/www/letsencrypt

自动化签发部署

ps:DNS验证版
使用脚本实现自动化

#!/bin/bash# 备份旧证书
cp /etc/nginx/cert/* /sslbak/
# 使用 acme.sh 生成新证书
acme.sh --issue --dns dns_ali -d *.test.com --fullchain-file /home/ecs-user/test.pem --key-file /home/ecs-user/test.key --force# 将新证书拷贝到 Nginx 证书目录
cp /home/ecs-user/test.pem /etc/nginx/cert/
cp /home/ecs-user/test.key /etc/nginx/cert/# 重启 Nginx 以应用新证书(请根据实际情况选择适当的重启方式)
systemctl reload nginx

设置定时任务

echo "0 0 1 */2 * root /bin/bash /path/to/script.sh" >> /etc/crontab

在这里插入图片描述

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

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

相关文章

【MySQL面试复习】什么是聚簇索引(聚集索引)和非聚簇索引(二级索引)/什么是回表?

系列文章目录 在MySQL中,如何定位慢查询? 发现了某个SQL语句执行很慢,如何进行分析? 了解过索引吗?(索引的底层原理)/B 树和B树的区别是什么? 系列文章目录什么是聚簇索引(聚集索引&#xff09…

无需工具清理电脑C盘

方法如下: 1、打开我的电脑,在C盘上面右键单击,选择属性: 2、然后点击清理磁盘,选择在自己要删掉的垃圾文件 接下来等待几分钟的样子,清理好就OK了,强迫症!

Bert基础(四)--解码器(上)

1 理解解码器 假设我们想把英语句子I am good(原句)翻译成法语句子Je vais bien(目标句)。首先,将原句I am good送入编码器,使编码器学习原句,并计算特征值。在前文中,我们学习了编…

STM32F103学习笔记(六) RTC实时时钟(应用篇)

目录 1. RTC 实时时钟的应用场景 2. RTC 的配置与初始化 2.1 设置 RTC 时钟源 2.2 初始化 RTC 寄存器 2.3 中断配置 2.4 备份寄存器配置 2.5 校准 RTC 3. 实例演示代码 4. 总结 1. RTC 实时时钟的应用场景 实时时钟(RTC)在嵌入式系统中具有广泛…

2023 最新 IntelliJ IDEA 2023.3 详细配置步骤演示(图文版)<中文版>

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

【MySQL】探索表结构、数据类型和基本操作

表、记录、字段 数据库的E-R(entity-relationship,实体-关系)模型中有三个主要概念: 实体集 、 属性 、 关系集 。 一个实体集对应于数据库中的一个表,一个实体则对应于数据库表 中的一行,也称为一条记录。…

扫二维码播放视频的效果怎么做?如何扫码看视频?

现在经常会在很多的商品详情上发现多个二维码,扫码后会展现不同的内容,比如图片、视频、文字等等。一般产品介绍和使用说明多以视频为主,那么如何制作扫码播放视频的效果呢,相信很多小伙伴对这个制作技巧都非常的感兴趣&#xff0…

亿发:解锁数据智能力,探索数据中台的未来发展趋势与智能化革命

数据中台是什么 数据中台是一种基于现代数据技术和架构的概念,其提出之前,企业在解决数据资源整合和共享方面采用了各种不同的方法。在阿里提出数据中台概念之前,大型企业已经在进行各类数据处理,并且在没有数据中台的情况下取得…

应急响应-常规处置办法

网站中被植入Webshell,通常代表着网站中存在可利用的高危漏洞,攻击者利用这些漏洞,将Webshell写入网站,从而获取网站的控制权。一旦在网站中发现webshell文件,可采取以下步骤进行临时处置。 入侵确定时间 通过在网站…

揭示IP查询结果偏差的现象及其影响

在互联网的日益普及和数字化的时代,IP地址成为了我们在网络上进行通信和交流的关键。然而,尽管IP地址通常被认为是准确地标识设备位置的重要工具,但实际上,IP查询结果存在一定的偏差,这可能会给我们带来一些意想不到的…

抖音数据抓取工具|短视频下载工具|视频内容提取软件

一、开发背景: 随着抖音平台的流行,越来越多的人希望能够下载抖音视频以进行个人收藏或分享。然而,目前在网上找到的抖音视频下载工具功能单一,操作繁琐,无法满足用户的需求。因此,我们决定开发一款功能强大…

字节跳动Java端研发面试,P8大佬亲自讲解

2024第一次Java面试,我去了快手。快手的面试挺有挑战性的,而且还特别有意思,感觉啥都能问到。(二面是10天前约的面试,差点要忘了)然后是HR面,前天我就收到offer。 1. 面试官:工作中使…