去年这个时候薅的国外一家通配符证书到期了,这两天才发现,就索性直接换上去了,因为let's encrypt的证书只有三个月,尽管可以续期,但是cdn上却需要手动换,只能更换一年的普通证书或者一年的通配符证书,基于白嫖的体质,找到了之前在mjj论坛一直广为宣传的180天免费通配符证书,虽然只有半年,但一年只需要换两次,也省事了好多。
话不多说,直接上方法!
准备工作
有些大佬应该是手搓的环境,应该不需要这一步安装
###下载并安装amce.sh 并且exmail改为自己的邮箱
curl https://get.acme.sh -s | sh -s email=my@example.com
注册设备
##注册设备,直接在服务器上执行以下命令,注意my@example.com修改为自己的邮箱(极其重要),此目的是验证订单,防止大批量被薅
acme.sh --register-account --accountemail \
my@example.com \
--server http://acme.hi.cn/directory
域名验证
域名申请方法A--DNS验证
- 域名在dnspod(腾讯云)
控制台申请api密钥以及id
##验证api,直接服务器执行,请改为自己的id以及key,以下为示例
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
##申请证书,直接执行如下命令
acme.sh --issue \
--dns dns_dp \
-d \*.1abc.com \
--days 180 \
--server https://acme.hi.cn/directory
下发成功则证书存放于 ~/.acme.sh/your.domain里,里面的full_chain.pem以及key.epm则是你的证书
- 域名在阿里云
首先在阿里云申请一个 AccessKey,用于 API 操作阿里云服务,可以使用创建子用户的方法(更安全),并且只授权 AliyunDNSFullAccess 权限
###同样将key和id输入服务器
export Ali_Key="阿里云API KEY"
export Ali_Secret="阿里云API Secret"
##申请证书则直接执行
acme.sh --issue \
--dns dns_dp \
-d \*.1abc.com \
--days 180 \
--server https://acme.hi.cn/directory
下发成功则证书存放于 ~/.acme.sh/your.domain里,里面的full_chain.pem以及key.epm则是你的证书
其他服务商请参考 其他域名服务商申请api验证
域名验证方法B--文件验证
此方法适用于域名没到期,可以正常访问,不然得关掉证书才能正常申请,因为我的证书到期了,又套了CDN,需要关掉好几样,为了快速只好选择方法A
###其中 /www/wwwroot/abcdef.com 为你自己的网站目录(此为宝塔下路径,具体根据自己网站来定),只能在证书没到期可以正常访问下用此种方法
acme.sh --issue \
-d *.abcdef.com \
--webroot /www/wwwroot/abcdef.com \
--days 180 \
--server https://acme.hi.cn/directory
####如果无法申请成功,报403错误
##例如 Nginx 默认会禁止 . 点开头的目录,可以添加以下配置放行并重启 HTTP 服务:
location /.well-known {
allow all;
}
##Apache 默认会禁止 . 点开头的目录,可以添加以下配置放行并重启 HTTP 服务:
<Directory "/.well-known">
AllowOverride All
</Directory>
##宝塔面板用户不需要,默认配置在网站里的配置文件中
我写过一个脚本,acme生成证书之后自动上传腾讯云并且替换cdn之前的域名证书
我这不行,我用的别人自建的cdn