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/