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

这篇文章介绍了acme.sh,一个开源的ACME协议客户端,用于自动化申请、更新和部署SSL/TLS证书。文章详细讲解了如何安装、配置、选择默认CA、使用DNSAPI部署、申请证书、验证安全等级以及自动化签发和部署的过程。
摘要由CSDN通过智能技术生成

简介

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
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
cd
# 备份旧证书
cp /etc/nginx/cert/* /etc/nginx/sslbak
# 使用 acme.sh 生成新证书,此处使用了绝对路径来运行acme脚本,请按照实际情况操作。/home/ecs-user是我当前用户的家目录。
/home/ecs-user/.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 *  /path/to/script.sh" >> /etc/crontab

每两个月运行一次。
在这里插入图片描述

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: Acme.sh是一个开源的脚本工具,可以帮助用户实现自动化证书管理,包括SSL/TLS证书的获取、更新和部署,支持Let's Encrypt等公共CA中心。QNAP则是一款NAS网络存储设备,具有数据备份、远程访问等功能,同时也支持安装插件扩展其功能。Acme.sh和QNAP的结合,可以为QNAP设备提供快速、便捷的证书管理工具,保障其数据传输安全和隐私保护。安装Acme.sh后,用户只需要一条简单的命令,就可以自动获取证书并进行更新和部署,同时通过QNAP自带的Web服务器或Web Station功能,可以实现HTTPS协议下的安全访问和数据传输,提升数据安全级别。此外,Acme.sh还提供了多种验证方式,比如DNS、HTTP、TLS、TLS-ALPN等,可以应对不同证书申请场景,提高证书获取的成功率。总之,Acme.sh和QNAP的结合,在保证数据安全的同时,也为用户提供了更多的便利和灵活度,是QNAP用户的不错选择。 ### 回答2: Acme.sh是一个在Linux系统中自动化申请和更新Let's Encrypt SSL证书的工具,它可以简化证书的管理过程,让SSL证书部署更加简单和快捷。而QNAP则是一个网络存储设备的品牌,其设备多用于小型企业和家庭用户存储数据、共享数据等。 在Acme.sh和QNAP的结合下,用户可以在QNAP设备上自动化申请Let's Encrypt SSL证书,以保障QNAP设备上的数据传输安全。此外,使用Acme.sh与QNAP结合还可以方便地管理SSL证书的更新和扩展,减少了用户可能遇到的与证书管理相关的问题。 总的来说,Acme.sh与QNAP的结合为用户提供了一种更加简单、安全、可靠的SSL证书管理解决方案,这对于需要在QNAP设备上存储敏感数据的用户来说是非常有价值的。 ### 回答3: Acme.sh是一款高效、易用的SSL证书自动化管理工具,而QNAP则是一家以网络存储为主的制造商。acme.sh qnap可以理解为在QNAP设备上安装并配置acme.sh以便自动化管理SSL证书。 在QNAP设备上使用acme.sh,可以实现自动化地获取和更新SSL证书,使得网站的安全性得到保证。使用acme.sh的好处是它的支持范围非常广,可以与各种不同类型的Web服务器、CDN和DNS服务集成,方便快捷。 而且,acme.sh非常灵活,你可以在控制台中直接运行它,也可以使用脚本进行扩展。如果你是一名开发人员或系统管理员,那么acme.sh一定会帮助你更快更高效地管理SSL证书。 总之,acme.sh qnap是一种非常实用的工具,可以使得SSL证书管理更加简单方便,同时也能提高网站的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓夜残歌

可莉发来一条红包申请!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值