HTTPS证书终于挥下了无情的镰刀-HTTPS证书自动续签方案

2024-02-11 04:36

本文主要是介绍HTTPS证书终于挥下了无情的镰刀-HTTPS证书自动续签方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现在网站基本都上了 HTTPS 证书

阿里云 SSL 产品日前发布公告,公告显示自 2023 年 11 月 14 日开始生效厂商策略,对于免费提供的 SSL 证书签发后证书有效期统一为 3 个月,不再免费提供 1 年版免费证书。想要 1 年的需要购买 68 块一年。终于 HTTPS 证书也开始收割了。有钱的可以去支持下,毕竟不能一直靠爱发电

继而腾讯云等相关证书厂商也都更改了策略,一时间 HTTPS 证书哀嚎遍野。 腾讯云可以申请 1 年的的,但是数量只有 10 个。

之前是免费 1 年的,数量也够用,也就懒得折腾了。到期再换,本来也想看证书自动续期的方案,正好借此机会研究下。

使用 acme.sh 自动签发 ZeroSSL 的 ECC 证书

安装 acme.sh

  1. 先安装好 curl,然后执行脚本:

curl https://get.acme.sh | sh国内服务器使用
git clone https://gitee.com/neilpang/acme.sh.git

执行命令

cd acme.sh
./acme.sh --install -m my@email.com

请注意替换 my@email.com 为你自己的邮箱,方便证书到期或者签发等结果通知。

安装完成后重新加载 Bash:

source ~/.bashrc

然后开启自动更新:

acme.sh --upgrade --auto-upgrade

目前 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 的泛域名证书

如果没有 zerossl 账户也是可以生成的,但是建议注册个账户方便以后通过 api 管理你申请的证书。

注册后进入 developer 界面

如图上面是 API key,下面是 EAB

将 acme.sh 的注册服务器改为 ZeroSSL

acme.sh --register-account --server zerossl \--eab-kid xxxxxxxxxxxx  \--eab-hmac-key xxxxxxxxx
获取 eab-kid 和 eab-hmac-key
  • 方式 1 通过 API Key 获取

curl -s -X POST "https://api.zerossl.com/acme/eab-credentials?access_key=c3xxxxxx"
{
"success": true,
"eab_kid": "EWxxxxxxxx",
"eab_hmac_key": "KPeQJxxxxxxxxx"
}
  • 方式 2 直接生成 eab

保存后执行上面的命令 将 acme.sh 的注册服务器改为 ZeroSSL,然后返回注册成功信息

使用 Dns Api 注册正式

可以申请泛域名证书。 比如 *.abc.com 可以自动检测更新。

有多种方式可以申请证书,但是 如果使用泛域名,只能使用 DNS API 模式,且会自动更新,推荐这种方式:

为了保证安全 创建一个用户 单独申请 DNS 管理权限

  1. 打开 RAM 访问控制-->身份管理-->创建用户”,输入 用户名、备注; 选择 OpenAPI 调用访问 启用 AccessKey ID 和 AccessKey Secret, 支持通过 API 或其他开发工具访问

点击右边的“添加权限”按钮,打开授权窗口。

有了 key 和 secret 然后执行命令创建

# 先添加阿里云Aliyun的DNS api密钥到临时环境变量
export Ali_Key="AccessKeyId"
export Ali_Secret="AccessKeySecret"

执行注册命令 (可以进行单域名、多域名、泛域名进行颁发。)

# 上面的临时变量,在添加证书后,会保存在account.conf中,后续不需要再指定
acme.sh --issue --dns dns_ali -d abc.com -d *.abc.com --keylength ec-256#查看命令帮助
acme.sh -h

--dns 指定 DNS 服务商,dns_dp 代表 DNSPod,还有 dns_cf 代表 CloudFlare,更多的字段见 https://github.com/acmesh-official/acme.sh/tree/master/dnsapi

-d *.abc.com 表示签发泛域名证书 如果 shell 工具不行视情况加*转义

--keylength ec-256 表示签发 ECC 证书,不添加则签发 RSA 证书,可选参数还有 ec-384 和 ec-521

这里会进行域名的 DNS 验证,中间会等待 若干 秒来验证正确性,验证成功后会有成功标记。

成功后会显示证书目录信息

腾讯云 同理。
export DP_Id="API Token 的 ID"
export DP_Key="API Token"
acme.sh --issue --dns dns_dp -d abc.com -d *.abc.com --keylength ec-256

要停止续签某域名的话,手动执行 然后删除证书目录

acme.sh --remove -d abc.com

其他

ECC 证书:ECC 证书是基于 ECC 算法的 SSL 证书,ECC 证书中文名称为椭圆加密算法,新一代算法趋势主流,一般采用 256 位加密长度,加密速度快,效率更高,对服务器资源消耗低,而且最重要的是更安全,抗攻击型更强。

RSA 证书:RSA 证书是基于 RSA 算法的 SSL 证书,RSA 算法是国际标准算法,应用较早,最为普及,比 ECC 算法的适用范围更广,兼容性更好,一般采用 2048 位的加密长度,但是对服务端性能消耗高。

acme 的 github 地址(https://github.com/acmesh-official/acme.sh?tab=readme-ov-file)


欢迎关注,后面会有一些资源可以免费获取哟~

分享前后端编程经验,技术干货,技术方案,好的资源,工具,提高开发效率。

这篇关于HTTPS证书终于挥下了无情的镰刀-HTTPS证书自动续签方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig