之前为本人的网站增加了SSL证书,目前曾经稳固运行了2年左右。这里为大家介绍一下怎么应用acme.sh给本人的多个网站(主域和多个子域。比方:*.baidu.com)申请收费的SSL证书。
acme.sh能够通过acme协定生成Let's Encrypt颁发的SSL证书。
Let's Encrypt 提供了单域名证书,泛域名证书和多域名证书
0.GitHub地址:https://github.com/acmesh-off...
1.在线装置
curl https://get.acme.sh | sh
OR
wget -O - https://get.acme.sh | sh
创立acme.sh别名
alias acme.sh=~/.acme.sh/acme.sh
装置过程中会增加cronjob,每天自动检测所有证书是否须要更新。查看定时工作(证书有效期个别为90天,acme.sh会在证书生效之前进行自动更新):
crontab -e
2.设置acme.sh主动降级
acme.sh --upgrade --auto-upgrade
3.应用DNS API(泛域名证书只能通过DNS API申请)
必要条件:域名曾经增加了解析(绑定了服务器IP)
acme.sh提供了两种形式进行验证域名所有权,一种是通过HTTP API,另一种是通过DNS API。
- HTTP API通过批改Apache和NGINX配置,在根目录增加文件, 通过域名能够拜访到该文件,验证胜利。
- DNS API 通过云服务商提供的API(须要云服务商反对),在DNS增加一条TXT解析记录,增加胜利则验证通过。国内的云服务比方jdcloud,Aliyun,DNSPod都能够应用这种形式。如果云服务商不在反对的列表里,能够应用腾讯云的DNSPod作为域名解析。
dnsapi 用法说明:https://github.com/acmesh-off...
4.主动公布证书
a.登录控制台(dnsapi 用法说明中有对应服务商地址)获取api key id 和 api key secret
b.导出到零碎变量
export JD_ACCESS_KEY_ID="sdfsdfsdfljlbjkljlkjsdfoiwje"export JD_ACCESS_KEY_SECRET="xxxxxxx"``````#查看增加的零碎变量echo $JD_ACCESS_KEY_ID
c.通过DNS API验证所有权,并生成证书(证书默认被保留在~/.acme.sh/目录中)
acme.sh --issue --dns dns_jd -d example.com -d '*.example.com'
id和key会被保留到~/.acme.sh/account.conf文件中,如果id或key产生变更,可能须要进行批改
d.copy/装置 证书(如果不应用install-cert命令进行装置,证书更新之后还是被保留在默认目录,会导致已有证书过期之后无奈被自动更新)
acme.sh --install-cert -d myflag.xyz \--key-file /etc/nginx/ssl/key.pem \--fullchain-file /etc/nginx/ssl/cert.pem \--reloadcmd "service nginx force-reload"
只用输出域名即可,不须要增加其余前缀
指定的所有参数都会被自动记录下来, 并在未来证书自动更新当前, 被再次主动调用