Let's Encrypt 泛域名证书申请

泛域名证书居然不支持不带子域名的域名。也就是说,不支持fly2x.com这个域名,还要为它单独申请一个证书。

1.说明

本文章中的环境为CentOS7,使用acme.sh,DNS验证方式,DNS服务商为Cloudflare

2.准备

下载并安装acme.sh
curl https://get.acme.sh | sh

3.获取证书

1. 自动验证

使用API密钥,给域名添加一个txt记录,来验证域名所有权。

1. 获取Cloudflare API KEY

cf.png

2. 将API KEY和Cloudflare注册邮箱添加到系统环境变量。

添加其他DNS服务器商的API KEY的变量名见这里。
https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

export CF_Key="abcdefghijklmnopqrstuvwxyz"
export CF_Email="admin@example.com"

3. 开始签发证书。

--dns后面的参数是指定dns服务商,此处是Cloudflare。其他DNS服务商的请根据第三步中的链接查找。
同时为子域名和主域名签发证书。
~/.acme.sh/acme.sh --issue --dns dns_cf -d *.你的域名.com 你的域名.com

4. 成功后会有如下提示:

[root@localhost home]# acme --issue --dns dns_cf -d *.你的域名.com
[2018年 03月 14日 星期三 12:02:53 CST] Registering account
[2018年 03月 14日 星期三 12:02:54 CST] Registered
[2018年 03月 14日 星期三 12:02:54 CST] ACCOUNT_THUMBPRINT='abcdefghijklmnopqrstuvwxyz'
[2018年 03月 14日 星期三 12:02:54 CST] Creating domain key
[2018年 03月 14日 星期三 12:02:54 CST] The domain key is here: /root/.acme.sh/*.你的域名.com/*.你的域名.com.key
[2018年 03月 14日 星期三 12:02:54 CST] Single domain='*.你的域名.com'
[2018年 03月 14日 星期三 12:02:54 CST] Getting domain auth token for each domain
[2018年 03月 14日 星期三 12:02:55 CST] Getting webroot for domain='*.你的域名.com'
[2018年 03月 14日 星期三 12:02:55 CST] Found domain api file: /root/.acme.sh/dnsapi/dns_cf.sh
[2018年 03月 14日 星期三 12:02:56 CST] Adding record
[2018年 03月 14日 星期三 12:02:56 CST] Added, OK
[2018年 03月 14日 星期三 12:02:56 CST] Sleep 120 seconds for the txt records to take effect
[2018年 03月 14日 星期三 12:04:58 CST] Verifying:*.你的域名.com
[2018年 03月 14日 星期三 12:05:08 CST] Success
[2018年 03月 14日 星期三 12:05:08 CST] Removing DNS records.
[2018年 03月 14日 星期三 12:05:19 CST] Verify finished, start to sign.
[2018年 03月 14日 星期三 12:05:27 CST] Cert success.

-----BEGIN CERTIFICATE-----
此处为一大堆英文字符串
-----END CERTIFICATE-----
[2018年 03月 14日 星期三 12:05:27 CST] Your cert is in  /root/.acme.sh/*.你的域名.com/*.你的域名.com.cer 
[2018年 03月 14日 星期三 12:05:27 CST] Your cert key is in  /root/.acme.sh/*.你的域名.com/*.你的域名.com.key 
[2018年 03月 14日 星期三 12:05:32 CST] The intermediate CA cert is in  /root/.acme.sh/*.你的域名.com/ca.cer 
[2018年 03月 14日 星期三 12:05:32 CST] And the full chain certs is there:  /root/.acme.sh/*.你的域名.com/fullchain.cer 

其中前两行的Cert是证书文件,Key是密钥文件。

2. 手动添加DNS记录验证

[root@qqcloud ~]# ~/.acme.sh/acme.sh --issue  -d *.fly2x.com  --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
[Fri Apr 27 09:30:28 CST 2018] Single domain='*.fly2x.com'
[Fri Apr 27 09:30:28 CST 2018] Getting domain auth token for each domain
[Fri Apr 27 09:30:31 CST 2018] Getting webroot for domain='*.fly2x.com'
[Fri Apr 27 09:30:31 CST 2018] Add the following TXT record:
[Fri Apr 27 09:30:31 CST 2018] Domain: '_acme-challenge.fly2x.com'
[Fri Apr 27 09:30:31 CST 2018] TXT value: '0ky80Arm2XVH8ysOgYOAsI8sJE75pjumOpo9WbnUASk'
[Fri Apr 27 09:30:31 CST 2018] Please be aware that you prepend _acme-challenge. before your domain
[Fri Apr 27 09:30:31 CST 2018] so the resulting subdomain will be: _acme-challenge.fly2x.com
[Fri Apr 27 09:30:31 CST 2018] Please add the TXT records to the domains, and re-run with --renew.
[Fri Apr 27 09:30:31 CST 2018] Please add '--debug' or '--log' to check more details.
[Fri Apr 27 09:30:31 CST 2018] See: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh

运行命令后,系统提示需要给域名_acme-challenge.fly2x.com添加TXT记录,内容为TXT value:后面的内容。添加完成,稍等几分钟记录生效后运行以下命令。将上面命令中的issue改成renew。

[root@qqcloud ~]# ~/.acme.sh/acme.sh --renew -d *.fly2x.com  --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
[Fri Apr 27 09:31:28 CST 2018] Renew: '*.fly2x.com'
[Fri Apr 27 09:31:29 CST 2018] Single domain='*.fly2x.com'
[Fri Apr 27 09:31:29 CST 2018] Getting domain auth token for each domain
[Fri Apr 27 09:31:29 CST 2018] Verifying:*.fly2x.com
[Fri Apr 27 09:31:35 CST 2018] Success
[Fri Apr 27 09:31:35 CST 2018] Verify finished, start to sign.
[Fri Apr 27 09:31:37 CST 2018] Cert success.
-----BEGIN CERTIFICATE-----
一大堆英文
-----END CERTIFICATE-----
[Fri Apr 27 09:31:37 CST 2018] Your cert is in  /root/.acme.sh/*.fly2x.com/*.fly2x.com.cer(证书文件)
[Fri Apr 27 09:31:37 CST 2018] Your cert key is in  /root/.acme.sh/*.fly2x.com/*.fly2x.com.key(密钥文件)
[Fri Apr 27 09:31:38 CST 2018] The intermediate CA cert is in  /root/.acme.sh/*.fly2x.com/ca.cer
[Fri Apr 27 09:31:38 CST 2018] And the full chain certs is there:  /root/.acme.sh/*.fly2x.com/fullchain.cer
[Fri Apr 27 09:31:38 CST 2018] It seems that you are using dns manual mode. please take care: The dns manual mode can not renew automatically, you must issue it again manually. You'd better use the other modes instead.(你现在使用手动修改DNS记录的方法来验证域名。请注意,这种方法只能手动续期,无法自动续期。)

4. 保存证书

官方文档说不要使用/root/.acme.sh/*.fly2x.com里面的证书,因为里面的文件会变。用以下命令把证书提取出来再使用。

acme.sh  --installcert  -d  *.fly2x.com   \
        --key-file   /etc/ssl/fly2x.key \
        --fullchain-file /etc/ssl/fly2x.cer 

5. 参考链接

https://51.ruyo.net/8077.html

添加新评论