免费无限泛域名ssl证书

其实,免费多域泛域名证书是存在的,就比如说我现在就在用,全站通用ssl证书。这样做的好处就是,可以随便给站点增加域名而不用重新签证书。而且二级域名随便拿出一个都是https的pack页面。坏处也是有的,就是别人可以通过检测你的证书来获取你所有的域名。毕竟有付出才会有收获╮(╯▽╰)╭

要实现自动续期,你至少需要有一台服务器,虚拟空间是不行的。且如果要签泛域名证书的话证书中包含的域名的DNS解析不用全部放在同一个地方,比如几个域名用cloudflare管理解析记录,另外几个用DNSpod,这几个域名签进同一张泛域证书里,这样也是可以的。

acme.sh

接下来,切入正题,本文的主角是一个开源脚本—-acme.sh

视频教程在底部,以cloudflare做演示。

这是一个开源脚本,在GitHUb上能查到–> https://github.com/Neilpang/acme.sh/

也带了详细的中文说明–> https://github.com/Neilpang/acme.sh/wiki/说明

但自动DNS部分只有英文说明–>https://github.com/Neilpang/acme.sh/wiki/dnsapi

偷偷告诉你,某freessl.cn里面的那个一元的证书自动化就是用acme魔改的,还用的是特别老的acme,教程也不全,效率很低。

下面,我就总结一下怎么用acme签多域泛域名证书。

正文开始

目录

一、安装acme

window也能用,但以下只考虑Linux。

下载安装?

可以先安装一下依赖socat,其实不装也没什么影响

Centos: yum install socat -y Debian/Ubuntu: apt install socat -y

curl https://get.acme.sh | sh

国内主机可能无法访问GitHub,需要添加以下内容到/etc/hosts

52.69.186.44 github.com
151.101.64.133 raw.githubusercontent.com

如果以上信息失效的话,可以用这篇文章的工具寻找新的可用ip。

alias acme.sh=~/.acme.sh/acme.sh

这是通用的,所有主流的Linux都能用,Github英文页给了支持范围。

acme可以用命令手动更新

acme.sh --upgrade

也能开启自动更新

acme.sh --upgrade --auto-upgrade

二、使用(单DNS运营商)

acme是自动工作的,你签了证书之后,每60天就会帮你续期一次,你只要签好就行了。

①非泛域名多域名证书

如果你只是想普通地签多域名证书的话,可以直接用宝塔签,宝塔那个也是内置的acme签的证书。也能自己用acme(得自己装个新的,找到宝塔内置的acme在哪也行)。

acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com

也可以这样

acme.sh --issue -d mydomain.com,www.mydomain.com --webroot /home/wwwroot/mydomain.com

我比较喜欢第二种,加域名更方便。但旧版的acme可能不支持。

②泛域名多域证书

由于泛域名证书需要验证域名只能用DNS验证而不能用文件验证,所以需要配置好相关DNS API,目前支持:

CloudFlareDNSPod、CloudXNS、GoDaddy、PowerDNS、OVH / kimsufi / soyoustart / runabove API、LuaDNS、DNSMadeEasy、Amazon Route53、Aliyun、ISPConfig 3.1、Alwaysdata、Linode、FreeDNS、cyon.ch、Domain-Offensive/Resellerinterface/Domainrobot、Gandi LiveDNS、Knot (knsupdate) DNS、DigitalOcean、ClouDNS、Infoblox、VSCALE、Dynu、DNSimple、NS1、DuckDNS、Name、Dyn Managed DNS、pdd.yandex.ru、Hurricane Electric、UnoEuro、INWX、Servercow、Namesilo、autoDNS (InternetX)、Azure DNS、selectel.com(selectel.ru)、zonomi、DreamHost、DirectAdmin 、KingHost DNS、Zilore DNS、Loopia、ACME DNS、TELE3、Euserv.eu、Google Cloud、ConoHa、netcup、GratisDNS、Namecheap、MyDNS……

以上只列举了一半,剩下的可以自己去GitHub查↓

https://github.com/Neilpang/acme.sh/wiki/dnsapi

以下以cloudflare和阿里云为例。

CloudFlare:

官方教程里有两种验证方式,一种是token,一种是key,key是有所有权限的,token是能限定权限范围的。自己用的话上key就好了,方便。

验证方法①-key:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="xxxx@sss.com"

里面的CF_Email就是你的账号,key按照下图步骤获取。

由于拥有了key就能完全控制你的账号(除了密码),所以要保护好你的key。

CF的api key很好找,从控制面板首页进入My Profile就能看到

从cf控制面板首页进入My Profile
找到API子菜单
查看密钥
获取到密钥

验证方法②-token:

export CF_Token="xxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxx"

创建token的地方就在获取key的地方的上面。

创建的token必须要有zone.zone的读取权限和zone.dns的编辑权限。如图所示。

账户ID在域名的Overview页面的下方的侧栏,我一开始也没找到……藏得也太深了

总的配置文件是/root/.acme.sh/account.conf,所有的api信息都最终被储存在这里。

然后打开ssh,申请证书。

acme.sh --issue --dns dns_cf -d domain1.com,domain2.com,*.domain1.com,*.domain2.com --server https://acme-v02.api.letsencrypt.org/directory

配置正确的话,执行命令后就会自动完成证书签发续期了 ,生成的证书文件的路径会用绿字输出 ,每六十天会自动续期。注意,新转移到cf需要转移后等一天等DNS全球生效之后再配置。

阿里云:

阿里的key也能在控制台首页找到

从阿里云控制台首页进入密钥控制台
创建或获取一个密钥

export Ali_Key="xxxxxxxxxxxxxxx"
export Ali_Secret="xxxxxxxxxxxxxxx"

然后就能用shell创建证书了

acme.sh --issue --dns dns_ali -d domain1.com,domain2.com,*.domain1.com,*.domain2.com --server https://acme-v02.api.letsencrypt.org/directory

配置正确的话,执行命令后就会自动完成证书签发续期了,生成的证书文件的路径会用绿字输出 ,每六十天会自动续期。注意,新转移到阿里云或新购的域名需要转移后等一天等DNS全球生效之后再配置。

③alias模式(推荐)(对多域名多DNS运营商兼容好)

此部分为后补充,请结合本文与新文章一同食用。

新文章↓

acme.sh alias模式详解

三、其他使用小技巧&普通模式域名多DNS运营商怎么办

在创建完证书后,你可以通过

acme.sh --list

来查看证书列表。

当你要换服务器的时候,你只要在新的服务器装好acme,然后把整个证书文件夹(在/root/.acme.sh/内,以第一个域名命名的文件夹)复制过去,就会在新的服务器继续自动续期。

如果你的域名不止在一个地方,但想放在一个证书里,那么你可以用多个--DNS -d来区分DNS。比如我有个域名在cf,有个在dnspod,那么我可以在输出了key和id之后这样签证。

acme.sh --issue --dns dns_dp -d domain_in_dnspod.com,*.domain_in_dnspod.com --dns dns_cf -d domain_in_cf.com,*.domain_in_cf.com --server https://acme-v02.api.letsencrypt.org/directory

如果出现添加DNS出错的话,可以添加--debug参数。加了之后错误会变少。如果还是出错的话,这个模式下会详细地列出每一个过程而不是直接显示结果。所以你可以根据出错位置进行判断和修复。

四、视频教程

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注