就是白嫖,而且理论上是无限的……中间有些坑,来看看我怎么踩!

如果不是泛域名的,Let’s Encrypt、Zero SSL 这类免费证书意义不大,——都去阿里云、腾讯云申请免费一年证书好了。

安装

acme.sh 是 shell 脚本,我们从 github 下载回来并安装。执行以下脚本

curl  https://get.acme.sh | sh -s email=youremail@xx.com

国内因为众所周知的关系,访问 github 总不是那么顺畅,有时会报错,

但没关系,多试几次总可以的。成功安装提示如下。

测试一下是否安装成功 acme.sh --version

关联 ZeroSSL

目前 acme.sh 支持四个正式环境 CA,分别是 Let’s Encrypt、Buypass、ZeroSSL 和 SSL.com,默认使用 ZeroSSL,所以我们不用切换。如果不放心,可以设置一下,

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

接着注册一个 ZeroSSL 账号 :https://zerossl.com/。然后关联到 acme
(据网友说 不注册也行,仅提供一个邮箱即可,但这安全性不高)

acme.sh  --register-account  -m 你注册时用的邮箱地址 --server zerossl


为了让 Zero 官网显示已颁发证书,你可能要用 ZeroSSL API Key 来关联 acme(这样的话有 Web 界面比较好管理,知道几时快过期)。访问 https://app.zerossl.com/developer 获取 API Key。

acme.sh  --register-account  --server zerossl \--eab-kid  你的eab-kid \--eab-hmac-key  你的eab-hmac-key

申请颁发证书

我们的 Web 服务器在同一台机器上,于是采用 webroot 模式来验证域名的所有权。

acme.sh  --issue -d xxx.com  -w /home/wwwroot/example.com

这里需要指定域名,并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录,然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用。

当然了这要求 Web 服务的 80 端口在跑。

如上图表示申请成功。我的服务器是 Tomcat 的,前端 80 端口重定向到 443 端口(旧的其他 HTTPS 证书),acme 的验证也能识别 HTTP 301 重定向。

注意这种不是泛域名的,是单域名的,只是先练手测试下!

查看已安装证书信息

acme.sh --info -d example.com

更新证书

这是自动的,查看定时任务

crontab  -l
56 * * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

泛域名证书

遗憾的是 wwwroot 模式并不能申请泛域名证书。那这三个月的 Zero 证书有什么用?还不如去申请阿里云、腾讯云免费一年的证书:(

要使用泛域名证书,得采用 DNS 模式验证。这是政策所限定的,无法突破,无论 Zero 还是 Let’s Encrypt。

我的是新网的,貌似不支持 DNS API——对此,你可以选择:

  • 使用 DNS alias mode
  • 修改域名 DNS 为可以支持 DNS API 的服务商,例如 新网注册域名如何配置为 DNSPod 的 DNS 服务器
  • 手动验证,每次手动添加 txt 验证,太反人类,不搞!

停止续签

这不是泛域名的,于是停止自动更新续签,输入命令:

acme.sh --remove -d example.com

太难了 :)我已经放弃了……

DNSPod

我不甘心,还想搞泛域名,既然新网不支持 DNS Api,那就把 DNS 切到别的,例如 DNSPod。

DNSPod 高档货当然有 DNS API,而且是免费的。DNS API 就是做这个的,添加 txt record 解析验证用,一切自动。

首先从新网迁出来(不是迁移域名,仅仅是 DNS):


然后 DNSPod 里面选择“取回域名”,再加一条 txt 验证一下。

OK 之后,你在 DNSPod 可以看到迁入成功

然后申请 DNS API Token,就是允许人家凭这 Token 任意修改你的域名解析,所以有一定泄漏安全性的风险。进入账号中心->密钥管理:

记得要保存好秘钥的 ID 和 Token,后面的步骤需要用到这两个配置。

回到你的服务器,Linux,在服务器的环境变量中添加这两个值:

export DP_Id="你的ID"
export DP_Key="你的Token"

接着使用 acme.sh 申请签发证书,执行命令(注意 -d XXX.com -d *.XXX.com 分别两个域名,后者带通配符的是泛域名):

acme.sh/acme.sh --issue --dns dns_dp -d XXX.com -d *.XXX.com

等待一阵,如无意外就 OK。

其中,fullchain.cer 就是证书文件内容,而 xxx.key 就是证书的私钥。

DNS alias 模式

为了解决域名服务商没有 DNS API 的问题,也为了更高的安全性,可以使用 DNS Alias 模式来验证。原文说得好:

If your DNS provider doesn’t support API access, or if you’re concerned about security problems from giving the DNS API access to your main domain, then you can use DNS alias mode. For example, your main domain is example.com, which doesn’t have API access, or you don’t want to give the API access to acme.sh, since it’s important. And you have another domain: aliasDomainForValidationOnly.com, which has a supported DNS API. This domain is less important, and maybe it’s used for validation only.

首先做 CName 映射,在要申请证书的域名加上 cname 解析,映射到有 DNS API 的域名:

_acme-challenge.A.com=>   _acme-challenge.B.net

注意:

  • 这条 CName 解析要留着,以便以后 renew 要用到。
  • B.net 域名不需要你手动去增加 _acme-challenge 的指向,因为你已经应用这个域名的 DNS API 了,acme 会自动操作。

接着就可以颁发了

acme.sh --issue -d A.com -d *.A.com --challenge-alias B.net --dns dns_dp

如果出现下面错误 Not valid yet, let’s wait 10 seconds and check next one.

你要清除 B.net 上面多余的 txt 记录。

另外有个疑问,一般教程都说 两个 域名 -d A.com 和泛域名 -d *.A.com,但感觉泛域名已经包含了前者,申请一个就行了。DNA Alias 的时候我分开两次颁发的,使用却只是后者,所以感觉 -d A.com 没必要,——但又不确定。 要两个一起申请,不然的话:

总体来说,这个操作过程没有什么难度。但是要理解各项操作对应的规范、原理就比较困难了。

参考

  • 官方教程
  • acme.sh 简单教程
  • acme.sh 申请 ZeroSSL 泛域名证书
  • 使用 acme.sh 配置自动续签 SSL 证书
  • 如何白嫖一个免费的泛域名SSL证书

通过 acme.sh 申请 Zero SSL 免费泛域名证书相关推荐

  1. acme.sh申请Let‘s encrypt泛域名证书Docker化部署

    acme.sh申请Let's encrypt泛域名证书Docker化部署 一:手动安装acme.sh 二:申请证书 2.1 DNSAPI申请方式 2.2 DNS手动校验方式 2.3 HTTP校验方式申 ...

  2. 使用 Certbot 自动申请并续订阿里云 DNS 免费泛域名证书

    使用 Certbot 自动申请并续订阿里云 DNS 免费泛域名证书 首先安装 Python 3 yum install -y python39 创建并激活虚拟环境 mkdir -p /mnt/cert ...

  3. 免费泛域名证书怎么申请?

    网站的信息安全是很重要的,所以很多企业都会给网站配置安全证书,一般情况下,给网站配置免费泛域名证书是很重要的.不过,该证书在申请的时候一定要在正规的地方去申请.但是,申请的时候选择免费的证书是很好的, ...

  4. 申请 AlphaSSL (Loovit.Net) 免费泛域名证书的那些坑

    自从得知可以在 assl.loovit.net 申请到免费泛域名证书之后就一直想着把博客的 WoSign 证书换掉,毕竟部分 WoSign 的证书 Chrome 已经不再信任了,自己的博客从小绿锁变成 ...

  5. CentOS 7配置Let’s Encrypt支持免费泛域名证书

    Let's Encrypt从2018年开始支持泛域名证书,有效期3个月,目前仅支持acme方式申请,暂不支持certbot. 1.安装acme.sh curl https://get.acme.sh ...

  6. let's encrypt部署免费泛域名证书

    环境说明 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@localhos ...

  7. Let‘sEncrypt快速颁发及自动续签泛域名证书实践指南

    文章目录 0x00 前言简述 0x01 快速安装配置 1.acme.sh 0x02 证书自动签发实践 1.acme.sh + Cloudflare 实现自动签发泛域名证书. 0x03 使用实例 1.简 ...

  8. HTTPS之acme.sh申请证书

    原文:https://developer.aliyun.com/article/674835 简介: 1.关于let's encrypt和acme.sh的简介 1.1 let's encrypt Le ...

  9. 申请免费的国产泛域名证书

    1. 申请免费泛域名证书 云服务商提供的免费证书一般都是单独域名证书,对于泛域名(也可以称为子域名.通配符域名)支持的较少.如果想要使用免费的泛域名,则需要付费购买或者使用Let's Encrypt等 ...

最新文章

  1. zabbix图表出现中文乱码
  2. java B2B2C Springcloud多租户电子商城系统-消息驱动的微服务(消费分区)
  3. Netty详解(七):Netty 编解码以及消息头编解码器
  4. 【杂谈】为什么有三AI自断财路,从来不接广告
  5. 大学计算机基础实验指导试题,(大学计算机基础实验指导)模拟试题(二)参考答案...
  6. wxWidgets:wxStringTokenizer类用法
  7. YBTOJ 特殊数列(哈希表)
  8. 计算机组装与维护配置清单作业,计算机组装与维护 作业汇.doc
  9. Java LinkedList公共布尔boolean offerFirst(Object o)方法(带示例)
  10. python 日志模块 日志格式
  11. if--(else)语句,getchar()和putchar()、、||、!逻辑运算符
  12. python输入圆的半径公式_【公布答案(【输入输出】练习题:Hello, C++)】
  13. 兄弟连视频教程下载地址汇总-2014
  14. XP_cmdshell
  15. Why C++ Is Not “Back”
  16. WEB财务报表设计器的实现
  17. letax报错“ I can't write on file `***.pdf”
  18. 第三次作业:卷积神经网络基础
  19. 六大布局之线性布局详解
  20. vue 所见即所得_Vue html5编辑器:Vue的html5所见即所得编辑器

热门文章

  1. vs2017--MFC读写excel
  2. 有关蓝色RGB的数值
  3. 一男老师每日百词转载+连载(3)
  4. excel - 冻结窗格
  5. KO data-bind=“click: func“函数自动执行问题
  6. Android 点九图机制讲解及在聊天气泡中的应用
  7. 做笔记就用印象笔记,支持录音做笔记(附插件下载,一键将网页内容保存笔记中进行编辑)...
  8. 今日头条信息流 - 人群包dmp
  9. 低效能程序员的行为与思维
  10. 怎么把html格式转换成数字,怎么把数字转变成文本格式