自动化部署证书 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.mzph.cn/news/703421.shtml

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

相关文章

U盘拒绝访问?快速恢复数据的实用方案!

当您尝试访问U盘时,突然遇到“U盘拒绝访问”的提示,这无疑是一个令人头疼的问题。这不仅意味着您无法读取或写入U盘中的数据,还可能意味着重要文件的安全受到威胁。本文将深入探讨U盘拒绝访问的原因,并为您提供至少两种实用的数据…

electron+vue3全家桶+vite项目搭建【27】封装窗口工具类【1】雏形

文章目录 引入思路抽出公共声明文件抽出全局通用数据类型和方法主进程模块1.抽离基础常量2.封装窗口工具类 渲染进程模块测试结果 引入 demo项目地址 可以看到我们之前在主进程中的逻辑全部都塞到index.ts文件中,包括窗口的一些事件处理,handle监听&am…

机器学习打分函数在分子对接中的应用系列-GB_Score

欢迎浏览我的CSND博客! Blockbuater_drug …点击进入 文章目录 前言一、GB-Score是什么?二、文献复现 -训练和验证环境1. GB score验证虚拟环境的配置2. Usage1- Preparing ligand and protein file2- Generating features3 - Repeat and extend current…

Linux第66步_linux字符设备驱动_挂载和卸载

1、了解linux中的驱动类型: 1)、字符设备驱动 字符设备是limnux驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。如:GPIO输入输出、UART、I2C、SPI、USB、LCD、音频…

基于相位的运动放大:如何检测和放大难以察觉的运动(01/2)

基于相位的运动放大:如何检测和放大难以察觉的运动 目录 一、说明二、结果的峰值三、金字塔背景3.1 可操纵金字塔3.2 亚倍频程复数可控金字塔 四、基本方针4.1 1D 问题陈述4.2 一维方法4.3 实际实施说明 五、放大倍率的限制5.1 空间支持的影响5.2 频带的影响 六、推…

好书推荐丨细说Python编程:从入门到科学计算

文章目录 写在前面Python简介推荐图书内容简介编辑推荐作者简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家推荐一本Python基础入门的全新正版书籍,对Python、机器学习、人工智能感兴趣的小伙伴们快来看看吧~ Python简介 Python 是一种广泛使用的高级、解…

多目标追踪概述

1. 目标跟踪分类 单目标跟踪:在视频的初始帧画面上框出单个目标,预测后续帧中该目标的大小与位置多目标跟踪:追踪多个目标的大小和位置,且每一帧中目标的数量和位置都可能变化 2. 多目标跟踪目前的主要问题 形态变化&#xff1a…

做了个很牛的网站,可以搜索网站的网站到底有多好用?

今天给大家推荐的网站叫做:毒蘑菇 - 搜索 毒蘑菇搜索,顾名思义呢,搜索的功能比较好用,大家上网的时候总是需要记住网站的地址,即使你知道网站的名称,也得跳转到百度然后在搜索,有时候百度上那么…

天哪!还有这些逆天的fofa​语句?(二)

接上文 天哪!还有这些逆天的fofa语句? 再分享几条,个人觉得比较有意思的fofa语句。 情侣飞行器 之前写过文章的,有兴趣的师傅可以试着翻翻以前的文章去破解密码 fofa语句:"static/js/index.d2dcdf5b.js"…

sql-labs第46关(order by盲注脚本)

一、环境 网上有自己找 二、解释 order by 注入我们看他的true和false来进行注入出来 二、实操 让我们用sort 看看源码 最终我们的id是放到order by后面了 如果我们直接用列去排序 ?sortusername/password username: password: 可以看到顺序是不…

一个39岁程序员的自白,大龄程序员的出路在哪里?

一个39岁程序员的自白,大龄程序员的出路在哪里? 大龄程序员,最悲惨的,可能是但凡你发个贴,下面就会有类似这种人来怼你 本文来自知乎一个大龄程序员老哥(白圣君)的自白,涤生哥已经经…

JAVA集合进阶(Set、Map集合)

一、Set系列集合 1.1 认识Set集合的特点 Set集合是属于Collection体系下的另一个分支&#xff0c;它的特点如下图所示 下面我们用代码简单演示一下&#xff0c;每一种Set集合的特点。 //Set<Integer> set new HashSet<>(); //无序、无索引、不重复 //Set<…

【架构】GPU架构总结

文章目录 GPU架构GPU渲染内存架构Streaming Multiprocessor(SM)CUDA CoreTensor CoreRT CoreCPU-GPU异构系统GPU资源管理模型 GPU架构演进G80 架构Fermi 架构Maxwell架构Tesla架构Pascal架构Volta 架构Turing架构Ampere 架构Hopper架构 参考文献 GPU架构 主要组成包括&#xf…

外汇天眼:掌握这个方法,你也能成为交易高手!

在金融市场这个大潮中&#xff0c;外汇交易因其高杠杆、24小时交易等特点吸引着无数交易者。然而成功的交易并非易事&#xff0c;对于投资者来说&#xff0c;外汇交易市场是一个复杂且多变的市场&#xff0c;要在外汇市场中获得成功就需要扎实的外汇金融基础知识和独特的策略&a…

压力测试工具Jmeter的下载与使用

1、进入官网下载Jmeter https://jmeter.apache.org/ 国内镜像&#xff08;下载的慢的话可以用国内镜像下载&#xff09; https://mirrors.cloud.tencent.com/apache/jmeter/binaries/ 2、跳转到下载页面 3、根据不同系统下载相应版本的Jmeter压缩包&#xff0c;Linux系统下载…

医院LIS(全称Laboratory Information Management System)系统源码

目录 一、医院LIS系统概况 二、医院LIS系统建设必要性 三、为什么要使用LIS系统 四、技术框架 &#xff08;1&#xff09;总体框架 &#xff08;2&#xff09;技术细节 &#xff08;3&#xff09;LIS主要功能模块 五、LIS系统优势 &#xff08;1&#xff09;客户/用户…

LeetCode_Java_环形链表(题目+思路+代码)

141.环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位…

49.仿简道云公式函数实战-文本函数-Ip

1. Ip函数 获取当前用户的ip地址 注意是Ipv4的地址 2. 函数用法 IP() 3. 函数示例 获取当前用户的ip地址IP() 4. 代码实战 首先我们在function包下创建text包&#xff0c;在text包下创建IpFunction类&#xff0c;代码如下&#xff1a; package com.ql.util.express.sel…

如何使用Lychee+cpolar搭建本地私人图床并实现远程访问存储图片

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站&#xff0c;可以看做是云存储的一部分&#xff0c;既可…

EAP-TLS实验之Ubuntu20.04环境搭建配置(FreeRADIUS3.0)(二)

上篇文章简要介绍了freeradius的搭建及配置&#xff0c;在最后数据库连接阶段还没进行测试验证&#xff0c;今天继续。 修改相关文件 1 radiusd.conf 打开762行注释&#xff08;&#xff04;INCLUDE mods-enabled/sql&#xff09;&#xff1b; 2 sites-available/default …