使用Caddy申请免费的Let’s Encrypt泛域名SSL证书

by Rat’s

Rat’s Blog / 2019-03-03 21:45

说明:之前看到有人问了下Caddy怎么申请Let’s Encrypt泛域名SSL证书,就翻了下官方文档了解下,发现比用Nginx申请的过程简单很多,这里就发下方法。如果有人需要Nginx申请的方法,可以看下博主很久前发过的Nginx申请教程→传送门

说明

Caddy支持以下DNS服务商,所以需要提前将你的域名DNS服务器转移到指定服务商。

cloudflare、cloudxns、dnspod、gandi/gandiv5、godaddy、namecheap、vultr、googlecloud、auroradns、azure、    digitalocean、dnsimple、dnsmadeeasy、dyn、lightsail、linode、ns1、namedotcom、ovh、otc、pdns、rackspace、rfc2136、route53   

申请

由于博主的域名DNS都在CloudFlare,所以下面以CF为例。

1、安装Caddy

curl https://getcaddy.com | bash -s personal tls.dns.cloudflare

后面的tls.dns.cloudflarecloudflare的插件,如果你是其它DNS服务商就需要替换下插件参数,比如:

tls.dns.auroradns   tls.dns.azure   tls.dns.cloudflare   tls.dns.cloudxns   tls.dns.digitalocean   tls.dns.dnsimple   tls.dns.dnsmadeeasy   tls.dns.dnspod   tls.dns.dyn   tls.dns.exoscale   tls.dns.gandi   tls.dns.gandiv5   tls.dns.godaddy   tls.dns.googlecloud   tls.dns.lightsail   tls.dns.linode   tls.dns.namecheap   tls.dns.ns1   tls.dns.otc   tls.dns.ovh   tls.dns.powerdns   tls.dns.rackspace   tls.dns.rfc2136   tls.dns.route53i   tls.dns.vultr   

2、设置环境变量
以下为Caddy申请通配符时所需要的DNS服务商的环境变量。

#Aurora DNS by PCExtreme   AURORA_USER_ID   AURORA_KEY   AURORA_ENDPOINT(optional)      #Azure DNS   AZURE_CLIENT_ID   AZURE_CLIENT_SECRET   AZURE_SUBSCRIPTION_ID   AZURE_TENANT_ID      #Cloudflare   CLOUDFLARE_EMAIL   CLOUDFLARE_API_KEY      #CloudXNS   CLOUDXNS_API_KEY   CLOUDXNS_SECRET_KEY      #DigitalOcean   DO_AUTH_TOKEN      #DNSimple   DNSIMPLE_EMAIL   DNSIMPLE_OAUTH_TOKEN      #DNS Made Easy   DNSMADEEASY_API_KEY   DNSMADEEASY_API_SECRET   DNSMADEEASY_SANDBOX(true/false)      #DNSPod   DNSPOD_API_KEY      #DynDNS   DYN_CUSTOMER_NAME   DYN_USER_NAME   DYN_PASSWORD      #Gandi/Gandiv5   GANDI_API_KEY/GANDIV5_API_KEY      #GoDaddy   GODADDY_API_KEY   GODADDY_API_SECRET      #Google Cloud DNS       GCE_PROJECT   GCE_DOMAIN   GOOGLE_APPLICATION_CREDENTIALS      #Lightsail by AWS   AWS_ACCESS_KEY_ID   AWS_SECRET_ACCESS_KEY   AWS_SESSION_TOKEN(optional)   DNS_ZONE(optional)      #Linode   LINODE_API_KEY      #Namecheap   NAMECHEAP_API_USER   NAMECHEAP_API_KEY      #NS1   NS1_API_KEY      #Open Telekom Cloud Managed DNS   OTC_DOMAIN_NAME   OTC_USER_NAME   OTC_PASSWORD   OTC_PROJECT_NAME   OTC_IDENTITY_ENDPOINT(optional)      #OVH   OVH_ENDPOINT   OVH_APPLICATION_KEY   OVH_APPLICATION_SECRET   OVH_CONSUMER_KEY      #PowerDNS   PDNS_API_URL   PDNS_API_KEY      #Rackspace   RACKSPACE_USER   RACKSPACE_API_KEY      #RFC2136   RFC2136_NAMESERVER   RFC2136_TSIG_ALGORITHM   RFC2136_TSIG_KEY   RFC2136_TSIG_SECRET      #Route53 by AWS       AWS_ACCESS_KEY_ID   AWS_SECRET_ACCESS_KEY      #Vultr   VULTR_API_KEY

这些变量值可以在DNS服务商账户中查找,一般在设置什么的地方。然后这里以CloudFlare为例,先登录账号,然后再去获取APIAPI获取地址:https://www.cloudflare.com/a/profile

再使用命令设置环境变量:

export CLOUDFLARE_API_KEY="4993d7315d4c72770242357da"  #CloudFlare账户API   export CLOUDFLARE_EMAIL="moerats@live.com"  #CloudFlare账户邮箱   

3、获取通配符
先新建配置文件,使用命令:

#将域名修改为自己的,然后将下面全部一起复制到SSH客户端运行   echo "*.moerats.com {   tls {       dns cloudflare   }   }" > Caddyfile

这里如果你是其它DNS服务商就需要修改dns后面的参数,也就是服务商名称,均用小写字母,可以参考步骤1安装caddy的插件参数,比如插件为tls.dns.auroradns,那就用dns auroradns参数。

然后启动Caddy

caddy -conf Caddyfile

接下来几秒钟后,会自动给你生成一个通配符SSL证书,证书存放路径为:

~/.caddy/acme/acme-v02.api.letsencrypt.org/sites/wildcard_.moerats.com   

此时你就可以使用crtkey文件为你的所有子域名配置SSL了。

最后证书有效期依然是3个月,到期后可以重新用此方法申请。
请输入图片描述