使用 ACME.SH 免费自动签发 Let’s Encrypt 泛域名证书

Let’s Encrypt 在其官方博客上宣布即将在 2018 年 3 月支持免费签发通配符域名证书(Wildcard Certificates 俗称野卡),即届时大家可以免费签发 *.example.com 证书来保护当前域名下的所有子域名。

签发方法

1. 安装 acme.sh

普通用户和 root 用户都可以用以下命令安装:

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

acme.sh 会安装到你的 home 目录下:

~/.acme.sh/

退出当前用户,并重新登入,以使命令生效:

exit

2. 签发证书

签发泛域名证书只支持 dns 验证方式

Cloudflare

先获取 CF API key,

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"

然后签发

// 签发普通 RSA 证书
acme.sh --issue --dns dns_cf -d example.com -d *.example.com
// 签发 ECC 证书
acme.sh --issue --dns dns_cf --keylength ec-256 -d example.com -d *.example.com

DNSPod.cn

先获取 API Key 和 ID,

export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"

然后签发

// 签发普通 RSA 证书
acme.sh --issue --dns dns_dp -d example.com -d *.example.com
// 签发 ECC 证书
acme.sh --issue --dns dns_dp --keylength ec-256 -d example.com -d *.example.com

CloudXNS.com

先获取 API Key 和 Secret,

export CX_Key="1234"
export CX_Secret="sADDsdasdgdsf"

然后签发

// 签发普通 RSA 证书
acme.sh --issue --dns dns_cx -d example.com -d *.example.com
// 签发 ECC 证书
acme.sh --issue --dns dns_cx --keylength ec-256 -d example.com -d *.example.com

Hurricane Electric

填入 https://dns.he.net/ 的账号和密码,

export HE_Username="yourusername"
export HE_Password="password"

然后签发

// 签发普通 RSA 证书
acme.sh --issue --dns dns_he -d example.com -d *.example.com
// 签发 ECC 证书
acme.sh --issue --dns dns_he --keylength ec-256 -d example.com -d *.example.com

其他

其他 DNS 提供商可以在这查看

如果通过 DNS API 无法签发,这里有个方法:

// 签发普通 RSA 证书
acme.sh --issue --dns -d example.com -d *.example.com
// 签发 ECC 证书
acme.sh --issue --dns --keylength ec-256 -d example.com -d *.example.com

然后会给出两个 TXT 记录,将填入 DNS 提供商处,大致为:

@ <TXT> sfsgfdjyhkjh
@ <TXT> ksjfuioshgtn

然后再运行:

acme.sh --renew  -d example.com -d *.example.com
// 或者
acme.sh --renew --keylength ec-256 -d example.com -d *.example.com

即可。

生成的证书填入 Nginx 或者 Apache 重启即可。

#ECC
ssl_certificate /root/.acme.sh/example.com_ecc/fullchain.cer;
ssl_certificate_key /root/.acme.sh/example.com_ecc/example.com.key;
#RSA
ssl_certificate /root/.acme.sh/example.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/example.com/example.com.key;

ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;

https://www.yjk.im/letsencrypt-wildcard/

Leave a Comment