登博客发现https的小锁变红了,发现是证书过期了,之前使用http验证方式申请的证书不知道为啥没能自动续签,手动签了两遍没成功,遂改为使用dns验证方式申请。
#准备工作
1)域名一个。
2)能联网的vps一台。
3)域名托管到cloudflare。

1.取得api id和api key
我这里用的是cloudflare托管域名。
api id就是登录cloudflare的邮箱,下面取得api key。
登录cloudflare,进入需要申请的域名,右下角点‘获取您的 API 令牌’。
1.png
API令牌->Global API Key 查看,输入登录cloudflare的密码并验证,得到api key。
2.png
2.服务器上安装acme.sh,已经安装的跳过。
github项目地址:https://github.com/acmesh-official/acme.sh

curl  https://get.acme.sh | sh -s email=my@example.com
安装目录在~/.acme.sh/下。

3.申请ssl证书
先设置第一步取得的api id和api key。

export CF_Key="4f8094c701b6e27885f0da0bab6454de06613"
export CF_Email="my@example.com"

接下来正式申请证书,可以加多个-d指定多个子域名,也可以加 ‘*.域名’ 直接使用泛域名,dns验证的好就在这里。

acme.sh --issue --dns dns_cf -d clearwind.site -d *.clearwind.site

等待,会自动申请,申请完会打印证书位置。
3.png
查看acme的日志,也有证书的位置。

tail -n 500 -f ~/.acme.sh/acme.sh.log

4.安装证书
不详细展开,自己安装或者看acme.sh的帮助文档,需要注意的是:
Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。
acme.sh的帮助文档:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

5.其他
报 Please update your account with an email address first. 信息:

acme.sh --register-account -m xxxxxx@gmail.com