一、acme.sh的安装和使用

看到我的SSL证书了吗,看看它的使用者可选名称或者叫做证书主题背景的备用名称,是不是有一大堆?且有2个不同的主域名:looyeagee.cncsust-iotlab.com
图1:Windows下的证书解图

对于一个多站点,甚至管理了不同二级域名的我来说:Https证书问题是一大困扰问题。如今免费的DV证书提供商大约有三家:

  • 1、Let’s Encrypt :3个月有效期,支持多域名、泛域名、不同域名签发到一张证书上,最多签发100个域名。

  • 2、TrustAsia:1年有效期,单域名(签发根域名会赠送一个www的子域名)

  • 3、DigiCert Inc提供的Encryption Everywhere DV TLS CA - G1:1年有效期,单域名(签发根域名会赠送一个www的子域名)

其中TrustAsia的兼容性应该是最好的,只不过它同一域名下只能签发20张,有数量限制,且不能签发泛域名。所以我打算选择Let’s Encrypt,虽然它的证书只有3个月,但是使用acme.sh能自动签发证书而且能够自动续签,十分方便。

使用如下命令安装acme.sh

1
2
curl https://get.acme.sh | sh
source ~/.bashrc

然后使用acme.sh命令即可使用它

二、使用DNSPOD密钥

我的域名是在腾讯云上买的,所以DNS服务商是DNSPOD,如果你的不是DNSPOD提供服务,acme.sh还支持如下:CloudFlare、Aliyun、等等110余个提供商。你可以点击这儿查看列表。只不过,就算你是在其他地方买的,也可以将域名交给DNSPOD解析。

值得注意的是,如果你有多个域名都想把它签发到一张证书上,你需要确保你的DNSPOD帐号都管理了这些域名,而不是说只要是由DNSPOD提供服务而已。

登录DNSPOD后,来到密钥管理界面,点击创建密钥,名称随缘。

图2:创建密钥

点击确定后会弹出

图3:密钥结果

注意保存好ID和Token到本地,信息只会展示一次。

三、申请证书

在终端执行

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

然后我们即将进行签发证书,不过在此之前请注意,如果你的要申请的域名含有CNAME的解析记录,则最好将它暂停解析或者暂时用A记录代替。否则证书不能申请成功,当时我就有一个子域名做了CNAME记录,怎么也验证通过不了,网上提供的解决方法大多是错的。

然后执行

1
acme.sh --issue -d *.looyeagee.cn -d looyeagee.cn -d *.home.looyeagee.cn -d *.frp.looyeagee.cn  -d *.csust-iotlab.com -d csust-iotlab.com -d *.frp.csust-iotlab.com -d *.blog.csust-iotlab.com --dns dns_dp

其中第一个-d会作为证书的公用名 (CN),你想申请几个就用几个-d即可。--dns dns_dp是指定DNSPOD服务商。若你的不是,你可以按照刚刚的DNS服务商列表查看参数。

这样,多域名、泛域名、不同域名合为一体的证书就签发完毕了。