​https://github.com/Neilpang/acme.sh​

如果要生成全域名的证书,需要使用下面的命令,*.fengxin58.com不包含 fengxin58.com

export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"
acme.sh --issue --dns dns_ali -d *.fengxin58.com -d fengxin58.com

-d 指定的是common name,也就是CN

acme会在${home}/.acme.sh文件夹下创建以第一个-d参数的值为名称的文件夹,用于存储后续生成的CSR文件,证书及密钥;
例如在文件夹fengxin58.com下会生成以下7个文件

ca.cer //let's encrypt的根证书
fengxin58.com.cer //生成的证书
fengxin58.com.conf
fengxin58.com.csr // 证书请求文件
fengxin58.com.csr.conf
fengxin58.com.key //证书的密钥
fullchan.cer //全链路证书,带有ca.cer和fengxin58.com.cer的内容

FAQ

  1. kubernetes Ingress不支持域名通配符,*.fengxin58.com这种不能用,生成证书时需要指定具体的子域名的FQDN
  2. Istio支持通配符;
  3. 如果没有特殊说明,一般是将fullchan.cer部署到服务器上,不然有些系统(比如各家Android的系统),可能会因为系统内没有Let’s Encrypt的CA证书,导致网站的证书不识别;
  4. 如果要生成国际域名的证书的花,需要先安装idn,apt-get install idn
  5. 如果使用 dnspod ,acme 需要 DP_ID 和 DP_KEY 的来源过程如下,用户中心-》安全设置-》API Token Section 点击查看-》创建API Token,生成的新的记录的 ID 列 即是 DP_ID ,Token 列即是 DP_KEY。(2019年7月11号)

​使用 acme.sh 部署 Let’s Encrypt 通过阿里云 DNS 验证方式实现泛域名 HTTPS​