这么多年来我还是第一次用Let’s Encrypt的证书呢,以前买过2年,后面就一直在腾讯云和阿里云申请免费的ssl证书。
今天是搭建新服务器环境,就趁机试下,刚好我也想测试下cloudns家的api,这不就巧了,查了下资料就顺手记录一下,由于我也是刚用,所以3个月会不会自动更新,我暂时也不知道,反正按照文档操作的。
1、安装Acme脚本
curl https://get.acme.sh | sh #或者 curl https://get.acme.sh | sh -s email=my@example.com #my@example.com (你自己的邮箱)
安装之后会在你服务器的root文件夹里面出现一个文件夹: .acme.sh (看你自己服务器环境配置)
2、更改默认证书机构
acme.sh --set-default-ca --server letsencrypt
acme现在默认申请的是ZeroSSL,但是ZeroSSL不太稳定,所以换成letsencrypt家的。
3.1、申请ssl证书(http网站目录验证方式)
需要你把域名先解析到你服务器的网站上,然后用这个网站目录去申请。
比如:网站目录是jingxialaiweb,先把jingxialai.com域名直接解析到服务器的ip上,访问jingxialai.com是出现jingxialaiweb目录里面的网站内容才行,
acme.sh --issue -d jingxialai.com -d www.jingxialai.com --webroot /data/wwwroot/jingxialaiweb
申请成功之后在 .acme.sh文件夹里面就有对应jingxialai.com_ecc的文件夹,里面有几个文件,我们只需要用到jingxialai.com.cer和jingxialai.com.key就行。
3.2、申请ssl证书(dns域名验证方式)
这个就是我想要的,我域名在cloudns,所以需要先去添加一个api和密码,然后拿到api和密码之后再操作。
export CLOUDNS_AUTH_ID=1 export CLOUDNS_AUTH_PASSWORD="11111"
CLOUDNS_AUTH_ID就是auth-id,CLOUDNS_AUTH_PASSWORD就是对应设置的密码,然后再执行申请命令:
acme.sh --issue --dns dns_cloudns -d jingxialai.com -d www.jingxialai.com #或者 acme.sh --issue --dns dns_cloudns -d jingxialai.com -d *.jingxialai.com #通过api的方式支持通配符
如果api和密码正确,就等个几分钟,成功之后会显示Cert success,然后你在.acme.sh文件夹里面也能看见对应ssl证书的文件夹。
因为自动生成的证书都在~/.acme.sh/文件夹里面,我们需要把证书移动到你环境里面的ssl文件夹去,但是不能手动移动,需要用acme.sh自己的命令才行,手动移动就不能自动更新了,用到的命令:
acme.sh --install-cert -d jingxialai.com \ --key-file /usr/local/nginx/conf/ssl/jingxialai.com.key \ --fullchain-file /usr/local/nginx/conf/ssl/jingxialai.com.cer \ --reloadcmd "service nginx force-reload"
这个/usr/local/nginx/conf/ssl/文件夹路径,是根据你自己的来,nginx具体怎么配置ssl证书就不说了,我网站以前发过,不过很多年了,我们旗下有个教程网站,后期会更新相关教程。
如果域名使用cloudflare cdn模式,可以直接用他家的api申请:
获取cloudflare API key:https://dash.cloudflare.com/profile/api-tokens
export CF_Key="key" export CF_Email="cf 邮箱"
申请的dns_cloudns换成dns_cf就行了。
4、自动更新ssl证书
我们可以先看定时任务:crontab -l
里面会有相关的命令,比如我今天测试这个是:
52 13 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
再设置一下acme.sh更新,因为经常变协议,所以还是设置下自动更新比较好。
acme.sh --upgrade --auto-upgrade #自动更新 acme.sh --upgrade #手动更新
查看证书列表:
source ~/.bashrc acme.sh --list
删除域名:
acme.sh --remove -d jingxialai.com
如果在用的时候出现什么错误,可以开启debug模式
acme.sh --issue ..... --debug 2
我是看了文档,也看了其他人的教程,综合了一下,会不会自动更新,我暂时也不知道,3个月后看吧。
参考:
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
https://www.cloudns.net/wiki/article/186