利用 ACME 实现SSL证书自动化配置更新

news/2024/10/10 14:06:51

最近收到腾讯云的通知SSL证书要到期了,本想直接申请的发现现在申请的免费SSL证书有效期只有90天了,顺便了解了一下原因是包括Google在内的国际顶级科技公司一直都有在推进免费证书90天有效期的建议,免费证书加密等级低,难以应对今天日益复杂的网络环境,90天一更新有助于及时发现可能存在的安全漏洞,从而降低风险。这本意是好的但是苦了我们这些的IT 人了,不过好在有自动化的SSL证书更新神器acme,可以一键申请SSL证书,到期也会自动更新,省去了很多麻烦。


安装acme

首先下载安装 acme,后面的 email修改为自己的用于收取SSL证书相关的消息,acme 默认会安装在~/.acme.sh/目录下。

curl https://get.acme.sh | sh -s email=mymail@mail.com

修改SSL证书服务商

默认SSL 证书服务商为 ZeroSSL,申请过程比较容易出错建议修改为letsencrypt,

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

证书申请

证书申请过程需要一个域名验证操作,acme 支持两种验证方式:http 验证和 dns 验证,这里我们采用 dns 验证方式,dns 验证可以手动添加CNAME记录也可以通过 dns 厂商提供的 api 进行添加,后者更方便一下,提供 dns 服务的厂商也很多这里以 dnspod 为例进行说明。

申请DNSAPI

登录 DNSPod通过 API 密钥创建 DNSPod Token,密钥创建后要保存好后续无法查询。
image

配置DNSAPI

将上一步申请的DNSPod Token的 ID 和 Token导入到环境变量中

export DP_Id="511111"
export DP_Key="2d111111111"

执行申请操作

使用issue命令申请证书, 参数-d 用户指定要申请证书的域名,*.domain.cn是泛域名,domain.cn是根域名,test.domain.cn是单域名,此处需要注意要确定前面指定的SSL证书服务商是否支持申请泛域名,如果不支持就需要多次重复此步操作申请多个 SSL 证书,letsencrypt支持申请泛域名证书;参数 dns 用于指定 dns 服务厂商,执行器需要需要确保上一步的环境变量已经正确导入,可以检查~/.acme.sh/目录下的account.conf文件内容进行确认;命令执行后会通过dnsapi 自动添加CNAME记录并进行验证,验证通过后会在~/.acme.sh/domain.cn 目录生成申请好的证书。
申请过程请关注输出信息,存在异常时可以通过添加--debug参数输出更多信息以便排查。

acme.sh --issue -d domain.cn -d *.domain.cn --dns dns_dp

证书安装

证书申请成功还需要安装到对应的位置,需要使用--install-cert命令,这里以 nginx 为例进行说明,-d 参数指定域名,需要和安装的证书文件一一对应,--key-file指定证书私钥的安装位置,--fullchain-file指定证书文件的安装位置,--reloadcmd指定证书文件安装完成应用的重启命令,执行成功会提示 success,可以通过访问自己的域名进行验证,同时命令为添加一条自动化任务"/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null用于定时自动更新 SSL 证书,可以通过crontab -l命令查看。

acme.sh --install-cert -d domain.cn \--key-file       /usr/local/nginx/conf/cert/domain.cn.key  \--fullchain-file /usr/local/nginx/conf/cert/domain.cn.cer \--reloadcmd     "/usr/local/nginx/sbin/nginx -s reload"

相关网址

acme 使用说明
dnsapi 使用说明

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

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

相关文章

arm imx6ull docker启动失败问题查找与解决 内核配置相关

arm imx6ull docker启动失败问题查找与解决 内核配置相关1、增加POSIX Message qeue:could not get initial namespace: no such file or directory CONFIG_POSIX_MQUEUE=y 2、增加namespace failed to set to initial namespace CONFIG_NAMESPACES=y 3、创建网络失败,veth配…

ubuntu的镜像源+bionic版本

首先第一步 查找和你自己ubuntu版本匹配的版本号 匹配代号如下在终端输入lsb_release -a查看自己系统上的版本号可以看到我这个版本号的代号是bionic。 每个版本的镜像文件都是有规律的。 bionic版本的源如下:点击查看代码 # 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bi…

PictureBox实现进入换色,离开换色,点击换色

实现和Word标题栏类似的效果可以看到有三种颜色: 默认时是(243, 243, 243),鼠标进入时是这样(210, 210, 210),鼠标按下的瞬间变为了(177, 177, 177) 4个关键事件:MouseEnter、MouseLeave、MouseDown、MouseUp MouseEnter:在鼠标进入控件的可见部分时发生private void pictu…

Spring事务的1道面试题

每次聊起Spring事务,好像很熟悉,又好像很陌生。本篇通过一道面试题和一些实践,来拆解几个Spring事务的常见坑点。每次聊起Spring事务,好像很熟悉,又好像很陌生。本篇通过一道面试题和一些实践,来拆解几个Spring事务的常见坑点。 原理 Spring事务的原理是:通过AOP切面的方…

安装 Anaconda、PyTorch(GPU 版)库与 PyCharm

Anaconda 是一款巨大的 Python 环境集成平台,里面包含了 Python 解释器、Jupyter Notebook 代码编辑器以及很多的第三方库,所以安装 Anaconda 后我们无需再安装 Python 解释器,非常方便。 一、安装 Anaconda 1.卸载 Anaconda(可选) 如果我们原来的电脑上安装过 Anaconda,…

ArgoWorkflow教程(六)---无缝实现步骤间参数传递

之前我们分析了,Workflow、WorkflowTemplate 、template 3 者之间如何传递参数。 本文主要分析同一个 Workflow 中的不同 step 之间实现参数传递,比如将上一个步骤的输出作为下一个步骤的结果进行使用(而非以文件方式传递)。1. 概述 然后就是之前只分析了 Workflow、Workfl…

OOOPS:零样本实现360度开放全景分割,已开源 | ECCV24

全景图像捕捉360的视场(FoV),包含了对场景理解至关重要的全向空间信息。然而,获取足够的训练用密集标注全景图不仅成本高昂,而且在封闭词汇设置下训练模型时也受到应用限制。为了解决这个问题,论文定义了一个新任务,称为开放全景分割(Open Panoramic Segmentation,OPS…

如何将React项目,部署到Web服务器的Tomcat 上

将 React 应用部署到 Tomcat 服务器上通常需要将其构建为静态文件,然后将这些文件放入 Tomcat 的 webapps 目录。以下是具体步骤: 步骤指南 1. 构建 React 应用 首先,你需要在本地构建你的 React 应用。npm run build这会在项目根目录下生成一个 build 文件夹,里面包含了优…