跳到主要内容

使用 acme.sh 申请 DNSPod 通配符 SSL 证书

·1 分钟

[!说明] 以**DNS**方式可以申请通配符证书,如果有多个子域名的情况时,只需要申请一次即可。

创建DNSPod Token #

[!说明] 本章节使用腾讯云服务进行配置,如果你是在其他云服务商,应该只有创建密钥的方式有区别,后续操作和所属的云服务商应该就没有关系了。请根据你自己所属的云服务商进行灵活调整。

登陆腾讯云DNSPod​控制台,新增DNSPod Token,界面如下图所示,注意保存Token,后续无法再次查看,只能重新创建。

申请证书 #

acme.sh 实现了 acme 协议,可以从 ZeroSSLLet's Encrypt 等 CA 生成免费的证书。

安装 #

# 下载并执行安装脚本,同时注册账号
curl https://get.acme.sh | sh -s email=your_email@domain.com

# 安装完成后,因为acme.sh在.zshrc配置文件中添加了acme.sh的alias,需要使配置生效
source ~/.zshrc

配置 #

# 进入acme.sh的安装目录
cd ~/.acme.sh

# 编辑account.conf文件,添加如下配置并保存,下面是我已经在DNSPod创建好的id和key,直接使用即可
export DP_Id="your_dnspod_token_id"
export DP_Key="your_dnspod_token"
SAVED_DP_Id='your_dnspod_token_id'
SAVED_DP_Key='your_dnspod_token'

# 设置默认的证书颁发机构为 Let's Encrypt[reference:10][reference:11]
acme.sh --set-default-ca --server letsencrypt

申请 #

使用DNS的方式申请域名的通配符域名证书,申请大约需要等待一分钟,申请成功后你会在终端看到绿色的 “Cert success” 字样

acme.sh --issue --dns dns_dp -d example.com -d '*.example.com'

使用证书 #

如果你使用Nginx对你的服务进行反代,那么,可以将证书安装到Nginx的目录

# 创建证书存放目录
mkdir -p /path/to/your/nginx/ssl/example.com

# 安装证书并重载nginx
acme.sh --install-cert -d example.com \
        --key-file /path/to/your/nginx/ssl/example.com/privkey.pem \
        --fullchain-file /path/to/your/nginx/ssl/example.com/fullchain.pem \
        --reloadcmd "systemctl reload nginx"

自动续期 #

acme.sh支持自动续期,只需要在安装过证书后,执行下列命令即可

acme.sh --install-cronjob