前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程

利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程

原创
作者头像
陌涛
发布于 2022-05-03 06:10:30
发布于 2022-05-03 06:10:30
11.5K00
代码可运行
举报
文章被收录于专栏:畅所欲言畅所欲言
运行总次数:0
代码可运行

熟悉陌涛的都知道,陌涛一直都在使用 acme.sh 作为服务器端申请、部署、续期免费 SSL 证书的主要工具,今天在帮一个站长申请 SSL 证书的时候发现 acme.sh v3.0 开始默认的免费 SSL 证书变更为:ZeroSSL 了,这个 ZeroSSL 其实跟陌涛一直用的 Let's Encrypt 类似,在 2016 年就已经推出,和 Let's Encrypt 一样,证书有效期只有 90 天,支持泛域名 SSL 证书。和 Let's Encrypt 不同的是,ZeroSSL API 没有速率限制,不存在同一 IP 多次申请 SSL 证书被限制的问题,ZeroSSL 还提供了 WEB 界面可在后台管理 SSL 证书,相比 Let's Encrypt 功能更加丰富。

对于这个 ZeroSSL 证书陌涛很早就听说过,也顺手到其官网(https://zerossl.com/)上注册了一个账号,有兴趣的朋友可以参考一下 ZeroSSL 官网的一篇有关 ZeroSSL VS Let's Encrypt 的对比文章(点击直达),对比下来相对于 Let's Encrypt 来说 ZeroSSL 最大的亮点就是带有一个 web 端的 SSL 证书查询和管理平台可以更加直观的管理申请的 SSL 证书,另外就是 ZeroSSL 还提供了比较完善的 API 接口便于二次开发啥的,简单点儿来说 ZeroSSL 更加适合有特殊高级用途的站点选择使用,对于我们普通仅仅需要 HTTPS 的站长们来说 Let's Encrypt 其实就完全够用了,但是陌涛这里建议大家更换 Let's Encrypt 为 ZeroSSL。

首先安装acme.sh

acme.sh 实现了 acme 协议,可以帮助你快速申请SSL证书,自动更新证书等操作,极大简化操作步骤。在使用之前,我们需要先安装,以下命令均在Linux系统完成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl https://get.acme.sh | sh
source ~/.bashrc

或者:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget -O - https://get.acme.sh | sh

使用curl命令安装的第一次出现了如图的错误,提示可以先安装 socat ,因为我不需要,所以没有安装。curl安装失败,可以使用wget命令尝试。

设置为自动更新(可选):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
acme.sh --upgrade --auto-upgrade

acme的GitHub地址:https://github.com/acmesh-official/acme.sh

安装acme完成后使用“acme.sh -v”命令查看版本号,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
acme.sh -v

按照网上所说的acme.sh 2.x版本默认使用Let’s Encrypt作为服务提供商,3.x之后默认使用的是ZeroSSL,但是由于我第一次弄,所以还是重新更换默认服务商为ZeroSSL,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
acme.sh --set-default-ca --server zerossl

系统返回的命令就是zerossl服务商,然后我们设置下域名解析DNS API。

配置DNS API

SSL证书验证可通过DNS验证、文件验证等多种方式,为了方便多个域名申请以及后续证书更新,推荐使用DNS API方式,不过在使用前需要先进行设置。 如果使用的DNSPOD(国内版),命令为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export DP_Id="00250"
export DP_Key="imotao.com"

将ID换成自己的,把Token值放在Key之内,然后执行命令,如图:

acme.sh部署完成后我们来申请ZeroSSL泛域名SSL证书,需要先关联账户,执行下面的命令会自动关联账户,命令如下(admin@imotao.com改成你自己的ZeroSSL邮箱,即使没注册,运行命令之后也会自动注册的):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
acme.sh --register-account -m admin@imotao.com --server zerossl

命令执行后,如图,会给你反馈一些信息,记下来就行,一般用不到。

账户注册关联完成后申请泛域名证书,执行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
acme.sh --dns dns_dp --issue -d *.imotao.com -d imotao.com

其中 dns_dp 是指DNSPOD,*.imotao.com 换成您的 域名即可

PS:一定要设置两个域名,一个是*.域名,另外一个是域名,按照代码命令设置,图中未设置imotao.com,访问的时候会提示证书错误,切记!!!

注:acme.sh支持多个DNS服务商,演示用的dnspod,其他的服务商可以参考官方文档:https://github.com/acmesh-official/acme.sh/wiki/dnsapi  进行查看设置。

生成过程中,几分钟左右即可完成,在验证的过程中会自动解析一个TXT记录,校验完成后会自动删除,所以建议大家选择DNS校验,这里就不截图了,感兴趣的可以是dnspod域名继续的记录查看。待验证通过后即表示申请成功,如图所示,会给我们反馈证书生成的路径:

生成的证书放在了/root/.acme.sh/*.imotao.com目录,因为这是 acme.sh 脚本的内部使用目录,而且目录结构可能会变化,所以我们不能让 Nginx 的配置文件直接读取该目录下的证书文件,需要使用--installcert命令,指定目标位置,然后证书文件会被 copy 到相应的位置,我们先去/home/目录下新建一个/ssl/文件夹,进入文件夹在新建一个/域名文件夹/,例如, /home/ssl/imotao.com/,然后执行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
acme.sh --installcert -d *.imotao.com \
        --key-file /home/ssl/imotao.com/*.imotao.com.key \
        --fullchain-file /home/ssl/imotao.com/fullchain.cer \
        --reloadcmd "service nginx reload"

把“*.imotao.com”替换成刚刚您自己申请的泛域名,再把“*.imotao.com.key”换成刚刚生成的SSL证书密钥文件,fullchain.cer不需要替换了,默认生成的就是这个。

另外还得说下,我直接执行命令的时候出错(cannot touch错误 ),所以才新建目录之后才执行,执行完成后,在目录中才能看见被Copy的文件。正确的显示如下:

即完成命令之后会自动迁移,但是重启的命令出错,(重载代码已更新,不会出现图中错误),如图无效去AMH面板中重载nginx即可,证书配置完成后,我们需要部署到网站,打开对应的站点,点击站点配置,在弹出的界面选择SSL,然后选择其他证书,把刚刚Copy的文件内容复制到证书里面,到密钥(KEY)对应的是.key文件,证书(PEM格式)对应的是.cer文件。

复制完成后点击底部保存按钮,关于是否开启http强制跳转httls随意,建议开启,在SSL证书应用,设置完成后,打开配置文件,地址:/home/wwwroot/lnmp01/vhost/ 域名-https.conf (就是你环境的vhost这个文件)如图:

其他内容都不需要管,因为是系统生成的,我们只需要把SSL证书的路径更换一些,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ssl_certificate_key /home/ssl/imotao.com/fullchain.cer;
 ssl_certificate  /home/ssl/imotao.com/*.imotao.com.key;

把证书的路径换成我们刚刚Copy的路径即可。一切就绪之后我们打开网站,查看SSL证书,如图:

目前证书有效期是90天,三个月后按理说会自动续期,至于结果如何我们三个月后再见了,码了小半天的文章,测试了整整一天。

当然网上的教程很多,只不过他们会忽略一步基本的步骤,导致我测试的时候有些抓瞎,所以才把完整的步骤整理后重新发布一篇,有问题留言反馈吧。

卸载证书

今天更新下,怎么卸载已经存在的证书:

首先使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
acme.sh --list

命令查看目前服务器所存在的证书,如图,目前仅有一个证书:

然后我们使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
acme.sh  --revoke -d *.imotao.com

acme.sh  --remove -d *.imotao.com

--revoke,销毁一个证书,

--remove,从acme.sh已知的证书列表中删除证书。

证书卸载吊销完成后,我们需要的话在重新申请吧,最好回到证书的目录看看证书是否删除,未删除的话手动删了吧。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用acme.sh自动部署域名证书
目前使用量最大的免费SSL证书就是Let’s Encrypt,自2018-03开始,Let’s Encrypt官方发布上线了免费的SSL泛域名证书,目前通过DNS方式获取比较快,国内可以通过鹅云的DNSPod域名API或者猫云域名API自动签发Let’s Encrypt泛域名证书。因为鹅云使用的就是DNSPod域名,并且鹅云和DNSPod的账号是打通的,可以使用wx直接扫码登录。下文需要对鹅云和DNSPod进行操作,为了简化证书申请过程,需要提前安装acme.sh。acme.sh实现了acme协议,可以从Let’s Encrypt生成免费的证书,自动创建cron任务, 每天零点自动检测所有的证书,如果发现证书快过期了,需要更新,则acme.sh会自动更新证书,安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录中。
摘繁华
2022/12/05
3.2K0
用acme.sh自动部署域名证书
使用acme.sh申请Let's Encrypt免费的SSL证书
acme.sh 实现了 acme 协议,可以从letsencrypt生成免费的证书。接下来将为大家介绍怎样申请Let's Encrypt通配符证书。
青阳
2021/09/15
5.9K4
Let's Encrypt免费泛域名SSL证书申请及自动续签
Let's Encrypt: https://letsencrypt.org , 是一个免费的、自动化的、开放的证书颁发机构。截至2018年9月,它的全球SSL证书市场份额已超过50%,得到主流浏览器和厂商的认可与支持。
Cong Min
2019/09/07
21K1
acme.sh 3.0使用教程
申请证书之前,建议先在ZeroSSL官方网站:https://zerossl.com/注册账号,方便与acme.sh申请的证书进行绑定于关联。
无道
2021/07/28
2.6K0
使用 acme.sh 自动申请并更新泛域名证书
在互联网快速发展的今天,网站安全愈发重要,而 SSL/TLS 证书成为了保护网站数据的基础。对于管理多个子域的用户来说,泛域名证书(Wildcard Certificate)是一种高效便捷的选择。
沈唁
2024/11/03
9220
使用 acme.sh 自动申请并更新泛域名证书
【转】使用 acme.sh 为在腾讯云(DNSPod)解析的域名自动申请证书
原文地址: https://r2wind.cn/articles/20230914.html
保持热爱奔赴山海
2024/05/19
8940
使用 acme.sh 申请 SSL 证书
在申请 ssl 时,大部分平台都会存在或多或少的限制,比如国内平台的 亚洲诚信 ,该平台可以一次性申请双域名有效期为一年的证书,或者短期的通配符证书
阿龙w
2023/10/23
1.8K0
如何使用acme.sh自动获取、更新Let’s Encrypt的SSL证书?
acme.sh实现了acme协议,可以从let's encrypt生成免费的ssl证书。本文主要记录使用dnspod api 自动申请ssl证书
房东的狗丶
2023/02/17
5.5K0
acme从letsencrypt 生成免费通配符/泛域名SSL证书并自动续期
原来的ssl证书都是lnmp一键申请的,后来因为80端口问题,只能从运营商那边申请一年的,但是 都是单域名的没有泛域名的。其实已经知道有服务商早就推出免费的泛域名但是一直没有去了解,习惯真的很可怕,废话不多说  其实官方已经有比较详细的文档 按照官方的直接来就行了
pooky
2020/10/30
9.7K0
acme从letsencrypt 生成免费通配符/泛域名SSL证书并自动续期
通过acme.sh开源工具申请泛解析SSL证书
2.Linux云服务器(本文系统某讯云的Centos7),测试公网IP为:150.158.130.33
星哥玩云
2022/06/28
3050
通过acme.sh开源工具申请泛解析SSL证书
正确使用 acme.sh, 让你的网站永久使用 ssl 证书,It's free!
acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.
用户1418987
2023/12/06
11.1K1
正确使用 acme.sh, 让你的网站永久使用 ssl 证书,It's free!
acme.sh 申请 ZeroSSL 泛域名证书
原本用的阿里腾讯免费ssl 发现过期更新起来比较麻烦 于是就折腾使用acme.sh 自动申请泛域名ssl ZeroSSL。
傲绝
2023/03/27
2.8K0
HTTPS之acme.sh申请证书
Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的SSL/TLS证书。 Let's Encrypt由互联网安全研究小组(缩写ISRG)提供服务。主要赞助商包括电子前哨基金会、Mozilla基金会、Akamai以及思科。2015年4月9日,ISRG与Linux基金会宣布合作。 用以实现新的数字证书认证机构的协议被称为自动证书管理环境(ACME)。GitHub上有这一规范的草案,且提案的一个版本已作为一个Internet草案发布。 Let's Encrypt宣称这一过程将十分简单、自动化并且免费
惨绿少年
2018/12/19
4.8K0
ACME通过dns验证申请Let’s Encrypt免费ssl证书
这么多年来我还是第一次用Let’s Encrypt的证书呢,以前买过2年,后面就一直在腾讯云和阿里云申请免费的ssl证书。
速企云
2024/03/02
2.4K0
ACME通过dns验证申请Let’s Encrypt免费ssl证书
利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程
今天跟彧繎聊天时发现他的站使用的也是泛域名证书而且是一年了,问了他才知道是收费的,当然并不贵,只是我没有admin开启的邮箱也就是admin#talklee.com,所以无法申请,恰巧看到明月登楼博主的博客也是SSL证书就咨询了以下,发现他的是zerossl的证书,当然跟青云的一样有效期三个月,但是zerossl可以通过acme.sh实现自动续费,目前acme泛域名貌似仅仅命令形式申请,在官网上申请的时候需要一些费用才行。
李洋博客
2022/04/26
3K0
利用 acme.sh 申请 ZeroSSL 泛域名证书的图文教程
acme.sh配置泛域名证书Let'sEncrypt
作者:matrix 被围观: 3,071 次 发布时间:2019-09-18 分类:Linux | 无评论 »
HHTjim 部落格
2022/09/26
2.2K0
acme.sh配置泛域名证书Let'sEncrypt
使用acme.sh生成免费的SSL证书
acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.
码客说
2021/03/02
4.9K0
acme申请ssl证书
acme安装的时候就会自动添加crond计划任务来处理续约,当然也是可以手动来renew的。
行 者
2024/03/11
6220
40.9k star,acme.sh,ssl证书替换神器
假设你搞了博客,服务器买好了,域名买好了,服务开发好了,然后发现还需要证书,而且免费的3个月就要换?
大侠之运维
2025/01/23
2900
免费泛域名SSL证书
acme.sh 官方提供一个非常简单的一键安装脚本,老少皆宜。当然,安装这个工具对于是否在公网并没有任何要求,你可以选择在将要部署 SSL 证书的内网服务器中安装即可,请用非root用户全程执行命令。
chuchur
2024/11/21
2.1K0
相关推荐
用acme.sh自动部署域名证书
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验