原来的ssl证书都是lnmp一键申请的,后来因为80端口问题,只能从运营商那边申请一年的,但是 都是单域名的没有泛域名的。其实已经知道有服务商早就推出免费的泛域名但是一直没有去了解,习惯真的很可怕,废话不多说 其实官方已经有比较详细的文档 按照官方的直接来就行了
这里小记下自己的一些点,首先因为我这边没有80端口 所以只能通过 手动 dns 方式, 手动在域名上添加一条 txt 解析记录, 验证域名所有权。
acme.sh 支持通过域名服务商的api接口直接操作,这里赞一个
具体的各个域名服务商可以参考这里
https://github.com/acmesh-official/acme.sh/tree/master/dnsapi
我的是腾讯云的 用的是dnspod 所以是dp
步骤:
安装 并设置环境变量
curl https://get.acme.sh | sh alias acme.sh=~/.acme.sh/acme.sh
安装后 以后生成的密钥都会在 ~/.acme.sh/ 目录下
去域名服务商那边申请对应的token
可以把对应的token 添加到环境变量中 vim ~/.bash_profile
export DP_Id="123456" export DP_Key="abcdefg"
这样后续就可以让脚本自己去处理验证了
下面申请泛域名证书
第一种通过 80端口的 验证的 直接参考文档就可以
acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/
第二种:txt验证 (前提是设置token或者自己添加)
export DP_Id="1234" export DP_Key="sADDsdasdgdsf" acme.sh --issue --dns dns_dp -d aa.com -d www.aa.com
泛域名生成
acme.sh --issue --dns dns_dp -d dpdp.fun -d *.dpdp.fun
其实一样的 就是 第二个参数 是*.xxx.com
生成的密钥会放在~/.acme.sh/目录下 拷贝到对应的配置目录就可以
ssl_certificate /usr/local/nginx/conf/ssl/dpdp.fun/fullchain.cer; ssl_certificate_key /usr/local/nginx/conf/ssl/dpdp.fun/dpdp.fun.key;
acme.sh 会自动生成一个crontab自动续期对应的ssh
41 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
其实整个流程很简单全部自动化脚本 就申请一个密钥罢了,再也不用每次都要去一个一个申请 下载 配置了。