自动化部署证书 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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

逆向茶话会笔记

安卓逆向 用用burp设置代理或者用charles抓包 windows httpopen 类比web站点渗透测试 推荐书 飞虫 安卓大佬不怎么打ctf 喜欢在看雪和吾爱破解 提问环节 q websocket grpc抓包有什么推荐的工具? a 不太了解 游戏安全和llvm 既要逆游戏也要逆外挂 逆游戏入…

机器学习——线性代数中矩阵和向量的基本介绍

矩阵和向量的基本概念 矩阵的基本概念(这里不多说,应该都知道) 而向量就是一个特殊的矩阵,即向量只有一列,是个n*1的矩阵 注:一般矩阵用大写字母表示,向量用小写字母表示 矩阵的加减运算 两个…

SpringCloud-Docker原理解析

Spring Cloud和Docker的结合为微服务架构的部署和管理提供了强大的支持。本文深入剖析Spring Cloud与Docker的集成原理,从服务注册与发现、配置管理、负载均衡到容器化部署等方面展开详细解析。探讨Spring Cloud如何利用Docker容器技术实现服务的弹性伸缩&#xff0…

GitHub上的GCN

在GitHub上下载GCN代码,可以跑通 https://github.com/tkipf/pygcn

力扣用例题:2的幂

此题的解题方法在于根据用例调整代码 bool isPowerOfTwo(int n) {if(n1){return true;}if(n<0){return false;}while(n>2){if(n%21){return false;}nn/2; }if(n1){return false;}return true;}

Windows系统搭建Elasticsearch引擎结合内网穿透实现远程连接查询数据

文章目录 系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎&#xff0c;它提供了一个分布式、多…

SQL Server添加用户登录

我们可以模拟一下让这个数据库可以给其它人使用 1、在计算机中添加一个新用户TeacherWang 2、在Sql Server中添加该计算机用户的登录权限 exec sp_grantlogin LAPTOP-61GDB2Q7\TeacherWang -- 之后这个计算机用户也可以登录数据库了 3、添加数据库的登录用户和密码&#xff0…

Docker安装MS SQL Server并使用Navicat远程连接

MS SQL Server简介 Microsoft SQL Server&#xff08;简称SQL Server&#xff09;是由微软公司开发的关系数据库管理系统&#xff0c;它是一个功能强大、性能卓越的企业级数据库平台&#xff0c;用于存储和处理大型数据集、支持高效查询和分析等操作。SQL Server 支持广泛的应…

回归预测 | Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机多变量回归预测

回归预测 | Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机…

MySQL认证方法介绍

阅读本文之前请参阅----MySQL 数据库安装教程详解&#xff08;linux系统和windows系统&#xff09; MySQL数据库的认证方法对于确保数据安全和维护系统完整性至关重要。在MySQL中&#xff0c;有多种认证方法可供选择&#xff0c;每种方法都有其特定的用途和配置方式。本文将详细…

10 款数据恢复软件功能和有效性对比(2024 年更新)

数据丢失可能是一种痛苦的经历&#xff0c;无论是由于意外删除、硬件故障还是软件损坏。值得庆幸的是&#xff0c;数字时代带来了强大的数据恢复解决方案。 随着我们进入 2024 年&#xff0c;市场上充斥着旨在有效检索丢失数据的先进软件。在本文中&#xff0c;我们将探讨 2024…

Sentinel 动态规则扩展

一、规则 Sentinel 的理念是开发者只需要关注资源的定义&#xff0c;当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则&#xff1a; 通过 API 直接修改 (loadRules)通过 DataSource 适配不同数据源修改 手动通过 API 修改比较直观&#xff0c;…

概率基础——均匀分布

概率基础——均匀分布 介绍 均匀分布是最简单的概率分布之一&#xff0c;它描述了一个随机变量在一定范围内的取值概率均等的情况。在均匀分布中&#xff0c;每一个数值区间的概率密度都相同&#xff0c;因此它也被称为等概率分布。 理论及公式 在区间 [ a , b ] [a, b] [a…

CSS 的盒模型

CSS 的盒模型 在HTML里&#xff0c;每一个元素就相当于是一个矩形的 “盒子” &#xff0c;这个盒子由以下这几个部分构成&#xff1a;1.边框border&#xff0c;2.内容content&#xff0c;3.内边距padding&#xff0c;4.外边距margin 边框border 基础属性描述border-width粗…

ARM Cortex-X5 传言表现不佳,高功率浪涌和低多核分数影响即将推出的核心设计

ARM 的新 Cortex-X5 设计似乎遇到了问题&#xff0c;有新的传言称&#xff0c;超级核心在提高时钟速度时会经历严重的高功耗&#xff0c;并且当最大功率限制降低时&#xff0c;多核性能会下降。虽然这对高通来说可能不是问题&#xff0c;因为据说其 Snapdragon 8 Gen 4 采用定制…

ROS 2的前世今生 | ROS 2学习笔记

自2015年底首次踏入ROS&#xff08;Robot Operating System&#xff09;的世界以来&#xff0c;我在机器人领域的旅程已近九年。这段历程始于团队几位志同道合的朋友在业余时间的自发学习&#xff0c;逐渐演变成成立了一个致力于英特尔硬件平台与ROS框架集成优化的专业团队&…

[C++]使用C++部署yolov9的tensorrt模型进行目标检测

部署YOLOv9的TensorRT模型进行目标检测是一个涉及多个步骤的过程&#xff0c;主要包括准备环境、模型转换、编写代码和模型推理。 首先&#xff0c;确保你的开发环境已安装了NVIDIA的TensorRT。TensorRT是一个用于高效推理的SDK&#xff0c;它能对TensorFlow、PyTorch等框架训…

基于Java SSM框架实现音乐播放器管理系统项目【项目源码+论文说明】计算机毕业设计

ssm音乐播放器管理系统演示录像2020 摘要 随着社会的发展&#xff0c;计算机的优势和普及使得音乐播放器管理系统的开发成为必需。音乐播放器管理系统主要是借助计算机&#xff0c;通过对首页、音乐推荐、付费音乐、论坛信息、个人中心、后台管理等信息进行管理。减少管理员的…

洛谷C++简单题小练习day21—梦境数数小程序

day21--梦境数数--2.25 习题概述 题目背景 Bessie 处于半梦半醒的状态。过了一会儿&#xff0c;她意识到她在数数&#xff0c;不能入睡。 题目描述 Bessie 的大脑反应灵敏&#xff0c;仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码&#xff08;0…9&#x…

我兄弟说要出摊,我说你等等,我给你设计招牌

我有个兄弟&#xff0c;是我高中同学&#xff0c;命运多舛却从不向命运低头&#xff0c;永远积极乐观的笑对生活。 1 高中时的梦想 —— 妇女之友 他高中的时候我们经常一起打篮球&#xff0c;他踢足球很有天赋&#xff0c;因为他我才知道足球里面有个动作叫踩单车&#xff0c…