acme.sh配置泛域名证书Let'sEncrypt
作者:matrix 被围观: 4,613 次 发布时间:2019-09-18 分类:Linux | 无评论 »
环境:
阿里云centos + dnspod.cn
acme.sh项目:https://github.com/Neilpang/acme.sh
安装
$ curl https://get.acme.sh | sh
出现Install success!
安装成功。
dns验证方式-获取域名dns token
这里使用域名解析服务商的token来进行域名拥有验证
在dnspod.cn上操作申请获取ID和token。
ssh执行命令设置变量,便于后面脚本读取。
$ export DP_Id="000000"
$ export DP_Key="26****************************ed"
阿里云dns:
$ export Ali_Id="000000"
$ export Ali_Key="26****************************ed"
阿里云dns获取api和key:https://usercenter.console.aliyun.com/#/manage/ak 进去申请AccessKey ID与Access Key Secret就好。
其他域名解析商的api token操作:
https://github.com/Neilpang/acme.sh/wiki/dnsapi
申请泛域名证书
为域名hhtjim.com
申请证书。
$ source .bashrc #执行资源更新 确保acme.sh别名可用
$ acme.sh --issue --dns dns_dp -d hhtjim.com -d *.hhtjim.com
说明:
dns_dp 为dnspod ,如果是阿里云dns则为 dns_ali
前面-d参数指定根域名,后面-d指定子级泛域名
.hhtjim.com的证书只能支持通配符当前级别的域名,也就是xxx.hhtjim.com
如果要三级子域名就需要单独申请:.xxx.hhtjim.com,参数为-d xxx.hhtjim.com -d *.xxx.hhtjim.com
执行之后等待几分钟出现绿色文字提示key,cer证书所在位置就酸完成了。
The domain key is here: /root/.acme.sh/hhtjim.com/hhtjim.com.key
Your cert is in /root/.acme.sh/hhtjim.com/hhtjim.com.cer
Your cert key is in /root/.acme.sh/hhtjim.com/hhtjim.com.key
The intermediate CA cert is in /root/.acme.sh/hhtjim.com/ca.cer
And the full chain certs is there: /root/.acme.sh/hhtjim.com/fullchain.cer
证书生成完成,使用的时候把证书移动到nginx配置相关目录。
nginx证书使用
server {
listen 443;
server_name www.hhtjim.com;
root /htdocs/www.hhtjim.com;
index index.html index.htm index.php;
ssl on;
ssl_certificate /certificate_file_PATH/hhtjim.com/fullchain.cer;
ssl_certificate_key /certificate_file_PATH/hhtjim.com/hhtjim.com.key;
...
ssl_certificate和ssl_certificate_key对应fullchain.cer和域名.key文件即可。
以后的所有子域名都可以使用这个路径的证书。
证书更新
脚本会自行写入crontab
36 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
每天定时检测过期再更新。
参考:
https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E
https://lnmp.org/faq/letsencrypt-wildcard-ssl.html
https://juejin.im/post/5b6542ed51882519d3468d6d